فهرست منبع

优化角色管理

zhouhao 8 سال پیش
والد
کامیت
5091e2603f

+ 8 - 2
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-controller/src/main/java/org/hswebframework/web/controller/authorization/AuthorizationController.java

@@ -97,8 +97,8 @@ public class AuthorizationController {
 
     @RequestMapping("/login-out")
     @AccessLogger("退出登录")
-    public ResponseMessage loginOut() {
-
+    public ResponseMessage loginOut(Authorization authorization) {
+        listenerAdapter.onLoginOut(authorization);
         return ok();
     }
 
@@ -178,6 +178,12 @@ public class AuthorizationController {
                 userAuthorizationListeners.forEach(listener -> listener.onAuthorizeFail(username));
         }
 
+        @Override
+        public void onLoginOut(Authorization authorization) {
+            if (userAuthorizationListeners != null)
+                userAuthorizationListeners.forEach(listener -> listener.onLoginOut(authorization));
+        }
+
         @Override
         public void onAuthorizeSuccess(boolean isRemembered, Authorization authorization) {
             if (userAuthorizationListeners != null)

+ 86 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-controller/src/main/java/org/hswebframework/web/controller/authorization/RoleController.java

@@ -0,0 +1,86 @@
+/*
+ *  Copyright 2016 http://www.hswebframework.org
+ *
+ *  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.hswebframework.web.controller.authorization;
+
+import org.hswebframework.web.authorization.Permission;
+import org.hswebframework.web.authorization.annotation.Authorize;
+import org.hswebframework.web.commons.entity.param.QueryParamEntity;
+import org.hswebframework.web.controller.QueryController;
+import org.hswebframework.web.controller.message.ResponseMessage;
+import org.hswebframework.web.entity.authorization.PermissionRoleEntity;
+import org.hswebframework.web.entity.authorization.RoleEntity;
+import org.hswebframework.web.entity.authorization.bind.BindPermissionRoleEntity;
+import org.hswebframework.web.logging.AccessLogger;
+import org.hswebframework.web.service.authorization.RoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import static org.hswebframework.web.controller.message.ResponseMessage.ok;
+
+/**
+ * 角色控制器
+ *
+ * @author zhouhao
+ */
+@RestController
+@RequestMapping("${hsweb.web.mappings.role:role}")
+@AccessLogger("{role_manager}")
+@Authorize(permission = "role")
+public class RoleController implements QueryController<RoleEntity, String, QueryParamEntity> {
+
+    @Autowired
+    private RoleService roleService;
+
+    @Override
+    public RoleService getService() {
+        return roleService;
+    }
+
+    @PostMapping
+    @Authorize(action = Permission.ACTION_ADD)
+    @AccessLogger("{add}")
+    public ResponseMessage addRole(@RequestBody BindPermissionRoleEntity<PermissionRoleEntity> permissionRoleEntity) {
+        return ok(roleService.insert(permissionRoleEntity));
+    }
+
+    @PutMapping("/{id}")
+    @Authorize(action = Permission.ACTION_UPDATE)
+    @AccessLogger("{update}")
+    public ResponseMessage updateRole(@PathVariable String id, @RequestBody BindPermissionRoleEntity<PermissionRoleEntity> permissionRoleEntity) {
+        permissionRoleEntity.setId(id);
+        roleService.updateByPrimaryKey(permissionRoleEntity);
+        return ok();
+    }
+
+    @PutMapping("/disable/{id}")
+    @Authorize(action = Permission.ACTION_DISABLE)
+    @AccessLogger("{disable}")
+    public ResponseMessage disable(@PathVariable String id) {
+        roleService.disable(id);
+        return ok();
+    }
+
+    @PutMapping("/enable/{id}")
+    @Authorize(action = Permission.ACTION_ENABLE)
+    @AccessLogger("{disable}")
+    public ResponseMessage enable(@PathVariable String id) {
+        roleService.enable(id);
+        return ok();
+    }
+}

+ 1 - 3
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-controller/src/main/java/org/hswebframework/web/controller/authorization/UserController.java

@@ -27,10 +27,9 @@ import org.hswebframework.web.entity.authorization.UserEntity;
 import org.hswebframework.web.logging.AccessLogger;
 import org.hswebframework.web.service.authorization.UserService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import static org.hswebframework.web.controller.message.ResponseMessage.*;
+import static org.hswebframework.web.controller.message.ResponseMessage.ok;
 
 /**
  * TODO 完成注释
@@ -41,7 +40,6 @@ import static org.hswebframework.web.controller.message.ResponseMessage.*;
 @RequestMapping("${hsweb.web.mappings.user:user}")
 @Authorize(permission = "user")
 @AccessLogger("用户管理")
-@Transactional
 public class UserController implements QueryController<UserEntity, String, QueryParamEntity>, CreateController<UserEntity, String> {
 
     private UserService userService;

+ 3 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-service/hsweb-system-authorization-service-api/src/main/java/org/hswebframework/web/service/authorization/RoleService.java

@@ -14,8 +14,11 @@ import org.hswebframework.web.service.QueryByEntityService;
 public interface RoleService extends
         CreateEntityService<RoleEntity>,
         QueryByEntityService<RoleEntity> {
+
     <T extends PermissionRoleEntity> String insert(BindPermissionRoleEntity<T> roleEntity);
 
+    <T extends PermissionRoleEntity> void updateByPrimaryKey(BindPermissionRoleEntity<T> roleEntity);
+
     boolean enable(String roleId);
 
     boolean disable(String roleId);

+ 12 - 0
hsweb-system/hsweb-system-authorization/hsweb-system-authorization-service/hsweb-system-authorization-service-simple/src/main/java/org/hswebframework/web/service/authorization/simple/SimpleRoleService.java

@@ -17,6 +17,7 @@
 
 package org.hswebframework.web.service.authorization.simple;
 
+import org.hswebframework.web.commons.entity.GenericEntity;
 import org.hswebframework.web.dao.authorization.PermissionRoleDao;
 import org.hswebframework.web.dao.authorization.RoleDao;
 import org.hswebframework.web.entity.authorization.PermissionRoleEntity;
@@ -73,6 +74,17 @@ public class SimpleRoleService extends AbstractService<RoleEntity, String>
         return roleEntity.getId();
     }
 
+    @Override
+    public <T extends PermissionRoleEntity> void updateByPrimaryKey(BindPermissionRoleEntity<T> roleEntity) {
+        tryValidateProperty(StringUtils.hasLength(roleEntity.getId()), RoleEntity.id, "id {not_be_null}");
+        tryValidateProperty(null == selectByPk(roleEntity.getId()), RoleEntity.id, "{role_exists}");
+        roleEntity.setEnabled(null);
+        tryValidate(roleEntity);
+        DefaultDSLUpdateService
+                .createUpdate(roleDao, roleEntity)
+                .where(GenericEntity.id, roleEntity.getId());
+    }
+
     @Override
     public boolean enable(String roleId) {
         return DefaultDSLUpdateService.createUpdate(getDao()).set("enabled", true).where(RoleEntity.id, roleId).exec() > 0;