Selaa lähdekoodia

新增OAuth 管理控制器

zhouhao 8 vuotta sitten
vanhempi
commit
04aa98d252

+ 56 - 0
hsweb-web-oauth2/hsweb-web-oauth2-controller/src/main/java/org/hsweb/web/oauth2/controller/OAuth2AccessController.java

@@ -0,0 +1,56 @@
+/*
+ * Copyright 2015-2016 http://hsweb.me
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hsweb.web.oauth2.controller;
+
+import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.core.authorize.annotation.Authorize;
+import org.hsweb.web.core.logger.annotation.AccessLogger;
+import org.hsweb.web.core.message.ResponseMessage;
+import org.hsweb.web.oauth2.po.OAuth2Access;
+import org.hsweb.web.oauth2.service.OAuth2ClientService;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/oauth2/access")
+@AccessLogger("OAuth2授权码管理")
+@Authorize(module = "oauth2-access")
+public class OAuth2AccessController {
+    @Resource
+    private OAuth2ClientService oAuth2ClientService;
+
+    @RequestMapping(method = RequestMethod.GET)
+    @Authorize(action = "R")
+    @AccessLogger("授权列表")
+    public ResponseMessage accessList(QueryParam param) {
+        return ResponseMessage.ok(oAuth2ClientService.selectAccessList(param))
+                .exclude(OAuth2Access.class, "accessToken")
+                .onlyData();
+    }
+
+    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
+    @Authorize(action = "D")
+    @AccessLogger("删除授权")
+    public ResponseMessage deleteAccess(@PathVariable("id") String id) {
+        return ResponseMessage.ok(oAuth2ClientService.deleteAccess(id));
+    }
+
+}

+ 98 - 0
hsweb-web-oauth2/hsweb-web-oauth2-controller/src/main/java/org/hsweb/web/oauth2/controller/OAuth2ClientController.java

@@ -0,0 +1,98 @@
+/*
+ * Copyright 2015-2016 http://hsweb.me
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hsweb.web.oauth2.controller;
+
+import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.po.user.User;
+import org.hsweb.web.controller.GenericController;
+import org.hsweb.web.core.authorize.annotation.Authorize;
+import org.hsweb.web.core.exception.NotFoundException;
+import org.hsweb.web.core.logger.annotation.AccessLogger;
+import org.hsweb.web.core.message.ResponseMessage;
+import org.hsweb.web.core.utils.WebUtil;
+import org.hsweb.web.oauth2.po.OAuth2Client;
+import org.hsweb.web.oauth2.service.OAuth2ClientService;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/oauth2/client")
+@AccessLogger("OAuth2客户端")
+@Authorize(module = "oauth2-manager")
+public class OAuth2ClientController extends GenericController<OAuth2Client, String> {
+    @Resource
+    private OAuth2ClientService oAuth2ClientService;
+
+    @Override
+    protected OAuth2ClientService getService() {
+        return oAuth2ClientService;
+    }
+
+    @RequestMapping(value = "/enable/{id}", method = RequestMethod.PUT)
+    @AccessLogger("启用")
+    @Authorize(action = "enable")
+    protected ResponseMessage enable(@PathVariable("id") String id) {
+        oAuth2ClientService.enable(id);
+        return ResponseMessage.ok();
+    }
+
+
+    @RequestMapping(value = "/disable/{id}", method = RequestMethod.PUT)
+    @AccessLogger("禁用")
+    @Authorize(action = "disable")
+    protected ResponseMessage disbale(@PathVariable("id") String id) {
+        oAuth2ClientService.disable(id);
+        return ResponseMessage.ok();
+    }
+
+
+    @RequestMapping(value = "/secret/{id}", method = RequestMethod.PUT)
+    @AccessLogger("刷新密钥")
+    @Authorize(action = "U")
+    protected ResponseMessage refreshSecret(@PathVariable("id") String id) {
+        return ResponseMessage.ok(oAuth2ClientService.refreshSecret(id));
+    }
+
+    @RequestMapping(value = "/secret", method = RequestMethod.PUT)
+    @AccessLogger("刷新当前用户密钥")
+    @Authorize
+    protected ResponseMessage refreshLoginUserSecret() {
+        User user = WebUtil.getLoginUser();
+        OAuth2Client client = oAuth2ClientService.selectSingle(QueryParam.build().where("userId", user.getId()));
+        if (client == null) {
+            throw new NotFoundException("未绑定客户端");
+        }
+        return ResponseMessage.ok(oAuth2ClientService.refreshSecret(client.getId()));
+    }
+
+    @RequestMapping(value = "/user", method = RequestMethod.GET)
+    @AccessLogger("获取当前用户持有的客户端信息")
+    @Authorize
+    protected ResponseMessage loginUserClient() {
+        User user = WebUtil.getLoginUser();
+        OAuth2Client client = oAuth2ClientService.selectSingle(QueryParam.build().where("userId", user.getId()));
+        if (client == null) {
+            throw new NotFoundException("未绑定客户端");
+        }
+        return ResponseMessage.ok(client);
+    }
+
+}