use of com.willshex.blogwt.shared.api.datatype.Role in project blogwt by billy1380.
the class RoleValidator method lookup.
public static Role lookup(Role role, String name) throws InputValidationException {
if (role == null)
throwServiceError(InputValidationException.class, ApiError.InvalidValueNull, TYPE + ": " + name);
boolean isIdLookup = false, isCodeLookup = false, isNameLookup = false;
if (role.id != null) {
isIdLookup = true;
} else if (role.code != null) {
isCodeLookup = true;
}
if (!(isIdLookup || isNameLookup || isCodeLookup))
throwServiceError(InputValidationException.class, ApiError.DataTypeNoLookup, TYPE + ": " + name);
Role lookupRole = null;
if (isIdLookup) {
lookupRole = RoleServiceProvider.provide().getRole(role.id);
} else if (isCodeLookup) {
lookupRole = RoleServiceProvider.provide().getCodeRole(role.code);
}
if (lookupRole == null)
throwServiceError(InputValidationException.class, ApiError.DataTypeNotFound, TYPE + ": " + name);
return lookupRole;
}
use of com.willshex.blogwt.shared.api.datatype.Role in project blogwt by billy1380.
the class GetRolesAndPermissionsActionHandler method handle.
/* (non-Javadoc)
*
* @see
* com.willshex.gson.web.service.server.ActionHandler#handle(com.willshex.
* gson.web.service.shared.Request,
* com.willshex.gson.web.service.shared.Response) */
@Override
protected void handle(GetRolesAndPermissionsRequest input, GetRolesAndPermissionsResponse output) throws Exception {
ApiValidator.request(input, GetRolesAndPermissionsRequest.class);
ApiValidator.accessCode(input.accessCode, "input.accessCode");
output.session = input.session = SessionValidator.lookupCheckAndExtend(input.session, "input.session");
input.user = UserValidator.lookup(input.user, "input.user");
if (!DataTypeHelper.<User>same(input.user, input.session.user)) {
UserValidator.authorisation(input.session.user, Arrays.asList(PermissionServiceProvider.provide().getCodePermission(PermissionHelper.MANAGE_USERS)), "input.session.user");
}
boolean idsOnly = Boolean.TRUE.equals(input.idsOnly);
if (idsOnly) {
input.user.roles = PersistenceHelper.typeList(Role.class, input.user.roleKeys);
input.user.permissions = PersistenceHelper.typeList(Permission.class, input.user.permissionKeys);
} else {
if ((input.permissionOnly == null && input.rolesOnly == null) || (Boolean.FALSE.equals(input.rolesOnly) && Boolean.FALSE.equals(input.permissionOnly))) {
UserHelper.populateRolesAndPermissionsFromKeys(input.user);
output.roles = input.user.roles;
output.permissions = input.user.permissions;
} else if (Boolean.TRUE.equals(input.permissionOnly) && Boolean.TRUE.equals(input.rolesOnly)) {
} else if (Boolean.TRUE.equals(input.permissionOnly)) {
UserHelper.populatePermissionsFromKeys(input.user);
output.permissions = input.user.permissions;
} else if (Boolean.TRUE.equals(input.rolesOnly)) {
UserHelper.populateRolesFromKeys(input.user);
output.roles = input.user.roles;
}
}
if (input.user.roleKeys != null && !Boolean.TRUE.equals(input.rolesOnly) && Boolean.TRUE.equals(input.expandRoles)) {
List<Permission> expandedPermissions;
if (idsOnly) {
Role lookupRole;
for (Role role : input.user.roles) {
lookupRole = RoleServiceProvider.provide().getRole(role.id);
if (lookupRole != null) {
expandedPermissions = PersistenceHelper.typeList(Permission.class, lookupRole.permissionKeys);
if (expandedPermissions != null) {
if (output.permissions != null) {
output.permissions.addAll(expandedPermissions);
} else {
output.permissions = expandedPermissions;
}
}
}
}
} else {
for (Role role : input.user.roles) {
expandedPermissions = PermissionServiceProvider.provide().getRolePermissions(role);
if (expandedPermissions != null) {
if (output.permissions != null) {
output.permissions.addAll(expandedPermissions);
} else {
output.permissions = expandedPermissions;
}
}
}
}
}
}
Aggregations