优化角色管理

This commit is contained in:
zhouhao
2017-02-24 18:18:33 +08:00
parent 15e0514a49
commit 5091e2603f
5 changed files with 110 additions and 5 deletions

View File

@@ -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)

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;