[Major] Refactored PrivilegeRemoveUserService into service with command
This commit is contained in:
parent
138e03763a
commit
1ac594f78e
|
@ -17,6 +17,7 @@ package li.strolch.rest.endpoint;
|
||||||
|
|
||||||
import static java.util.Comparator.comparing;
|
import static java.util.Comparator.comparing;
|
||||||
import static li.strolch.privilege.handler.PrivilegeHandler.PRIVILEGE_GET_USER;
|
import static li.strolch.privilege.handler.PrivilegeHandler.PRIVILEGE_GET_USER;
|
||||||
|
import static li.strolch.rest.helper.ResponseUtil.toResponse;
|
||||||
import static li.strolch.rest.helper.RestfulHelper.toJson;
|
import static li.strolch.rest.helper.RestfulHelper.toJson;
|
||||||
import static li.strolch.search.SearchBuilder.buildSimpleValueSearch;
|
import static li.strolch.search.SearchBuilder.buildSimpleValueSearch;
|
||||||
|
|
||||||
|
@ -44,7 +45,6 @@ import li.strolch.privilege.model.UserState;
|
||||||
import li.strolch.rest.RestfulStrolchComponent;
|
import li.strolch.rest.RestfulStrolchComponent;
|
||||||
import li.strolch.rest.StrolchRestfulConstants;
|
import li.strolch.rest.StrolchRestfulConstants;
|
||||||
import li.strolch.rest.StrolchSessionHandler;
|
import li.strolch.rest.StrolchSessionHandler;
|
||||||
import li.strolch.rest.helper.ResponseUtil;
|
|
||||||
import li.strolch.rest.model.QueryData;
|
import li.strolch.rest.model.QueryData;
|
||||||
import li.strolch.search.SearchResult;
|
import li.strolch.search.SearchResult;
|
||||||
import li.strolch.search.ValueSearch;
|
import li.strolch.search.ValueSearch;
|
||||||
|
@ -168,8 +168,8 @@ public class PrivilegeUsersService {
|
||||||
PrivilegeUserNameArgument arg = new PrivilegeUserNameArgument();
|
PrivilegeUserNameArgument arg = new PrivilegeUserNameArgument();
|
||||||
arg.username = username;
|
arg.username = username;
|
||||||
|
|
||||||
PrivilegeUserResult svcResult = svcHandler.doService(cert, svc, arg);
|
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
||||||
return handleServiceResult(svcResult);
|
return toResponse(svcResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
|
@ -255,7 +255,7 @@ public class PrivilegeUsersService {
|
||||||
userState = UserState.valueOf(state);
|
userState = UserState.valueOf(state);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String msg = MessageFormat.format("UserState {0} is not valid!", state);
|
String msg = MessageFormat.format("UserState {0} is not valid!", state);
|
||||||
return ResponseUtil.toResponse(msg);
|
return toResponse(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ServiceHandler svcHandler = RestfulStrolchComponent.getInstance().getComponent(ServiceHandler.class);
|
ServiceHandler svcHandler = RestfulStrolchComponent.getInstance().getComponent(ServiceHandler.class);
|
||||||
|
@ -280,7 +280,7 @@ public class PrivilegeUsersService {
|
||||||
locale = new Locale(localeS);
|
locale = new Locale(localeS);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String msg = MessageFormat.format("Locale {0} is not valid!", localeS);
|
String msg = MessageFormat.format("Locale {0} is not valid!", localeS);
|
||||||
return ResponseUtil.toResponse(msg);
|
return toResponse(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ServiceHandler svcHandler = RestfulStrolchComponent.getInstance().getComponent(ServiceHandler.class);
|
ServiceHandler svcHandler = RestfulStrolchComponent.getInstance().getComponent(ServiceHandler.class);
|
||||||
|
@ -313,7 +313,7 @@ public class PrivilegeUsersService {
|
||||||
|
|
||||||
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
||||||
if (svcResult.isNok())
|
if (svcResult.isNok())
|
||||||
return ResponseUtil.toResponse(svcResult);
|
return toResponse(svcResult);
|
||||||
|
|
||||||
// if user changes their own password, then invalidate the session
|
// if user changes their own password, then invalidate the session
|
||||||
if (cert.getUsername().equals(username)) {
|
if (cert.getUsername().equals(username)) {
|
||||||
|
@ -321,7 +321,7 @@ public class PrivilegeUsersService {
|
||||||
sessionHandler.invalidate(cert);
|
sessionHandler.invalidate(cert);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResponseUtil.toResponse();
|
return toResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@PUT
|
@PUT
|
||||||
|
@ -339,7 +339,7 @@ public class PrivilegeUsersService {
|
||||||
arg.map.put(Tags.Json.STATE, jsonObject.get(Tags.Json.STATE).getAsString());
|
arg.map.put(Tags.Json.STATE, jsonObject.get(Tags.Json.STATE).getAsString());
|
||||||
|
|
||||||
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
||||||
return ResponseUtil.toResponse(svcResult);
|
return toResponse(svcResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DELETE
|
@DELETE
|
||||||
|
@ -353,16 +353,15 @@ public class PrivilegeUsersService {
|
||||||
arg.username = username;
|
arg.username = username;
|
||||||
|
|
||||||
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
ServiceResult svcResult = svcHandler.doService(cert, svc, arg);
|
||||||
return ResponseUtil.toResponse(svcResult);
|
return toResponse(svcResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response handleServiceResult(PrivilegeUserResult svcResult) {
|
private Response handleServiceResult(PrivilegeUserResult svcResult) {
|
||||||
if (svcResult.isOk()) {
|
if (svcResult.isOk()) {
|
||||||
UserRep userRep = svcResult.getUser();
|
UserRep userRep = svcResult.getUser();
|
||||||
return Response
|
return Response.ok(userRep.accept(new PrivilegeElementToJsonVisitor()).toString(),
|
||||||
.ok(userRep.accept(new PrivilegeElementToJsonVisitor()).toString(), MediaType.APPLICATION_JSON)
|
MediaType.APPLICATION_JSON).build();
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
return ResponseUtil.toResponse(svcResult);
|
return toResponse(svcResult);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package li.strolch.service.privilege.users;
|
||||||
|
|
||||||
|
import static li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants.PRIVILEGE;
|
||||||
|
import static li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants.USER;
|
||||||
|
|
||||||
|
import li.strolch.model.audit.AccessType;
|
||||||
|
import li.strolch.model.audit.Audit;
|
||||||
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
|
import li.strolch.privilege.handler.PrivilegeHandler;
|
||||||
|
import li.strolch.service.api.Command;
|
||||||
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
|
public class PrivilegeRemoveUserCommand extends Command {
|
||||||
|
|
||||||
|
private String username;
|
||||||
|
|
||||||
|
public PrivilegeRemoveUserCommand(StrolchTransaction tx) {
|
||||||
|
super(tx);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validate() {
|
||||||
|
DBC.PRE.assertNotEmpty("username must be set", this.username);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doCommand() {
|
||||||
|
|
||||||
|
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
|
||||||
|
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
|
||||||
|
|
||||||
|
privilegeHandler.removeUser(tx().getCertificate(), this.username);
|
||||||
|
privilegeHandler.persist(tx().getCertificate());
|
||||||
|
|
||||||
|
Audit audit = tx().auditFrom(AccessType.DELETE, PRIVILEGE, USER, this.username);
|
||||||
|
tx().getAuditTrail().add(tx(), audit);
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,23 +15,20 @@
|
||||||
*/
|
*/
|
||||||
package li.strolch.service.privilege.users;
|
package li.strolch.service.privilege.users;
|
||||||
|
|
||||||
import li.strolch.model.audit.AccessType;
|
|
||||||
import li.strolch.model.audit.Audit;
|
|
||||||
import li.strolch.persistence.api.StrolchTransaction;
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
import li.strolch.privilege.handler.PrivilegeHandler;
|
import li.strolch.privilege.handler.PrivilegeHandler;
|
||||||
import li.strolch.privilege.model.UserRep;
|
|
||||||
import li.strolch.runtime.StrolchConstants.StrolchPrivilegeConstants;
|
|
||||||
import li.strolch.service.api.AbstractService;
|
import li.strolch.service.api.AbstractService;
|
||||||
|
import li.strolch.service.api.ServiceResult;
|
||||||
import li.strolch.service.api.ServiceResultState;
|
import li.strolch.service.api.ServiceResultState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||||
*/
|
*/
|
||||||
public class PrivilegeRemoveUserService extends AbstractService<PrivilegeUserNameArgument, PrivilegeUserResult> {
|
public class PrivilegeRemoveUserService extends AbstractService<PrivilegeUserNameArgument, ServiceResult> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PrivilegeUserResult getResultInstance() {
|
protected ServiceResult getResultInstance() {
|
||||||
return new PrivilegeUserResult(ServiceResultState.FAILED);
|
return new ServiceResult(ServiceResultState.FAILED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,24 +37,18 @@ public class PrivilegeRemoveUserService extends AbstractService<PrivilegeUserNam
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected PrivilegeUserResult internalDoService(PrivilegeUserNameArgument arg) throws Exception {
|
protected ServiceResult internalDoService(PrivilegeUserNameArgument arg) throws Exception {
|
||||||
|
|
||||||
li.strolch.runtime.privilege.PrivilegeHandler strolchPrivilegeHandler = getContainer().getPrivilegeHandler();
|
|
||||||
PrivilegeHandler privilegeHandler = strolchPrivilegeHandler.getPrivilegeHandler();
|
|
||||||
|
|
||||||
UserRep user;
|
|
||||||
try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_REMOVE_USER)) {
|
try (StrolchTransaction tx = openArgOrUserTx(arg, PrivilegeHandler.PRIVILEGE_REMOVE_USER)) {
|
||||||
tx.setSuppressAudits(true);
|
tx.setSuppressAudits(true);
|
||||||
|
|
||||||
user = privilegeHandler.removeUser(getCertificate(), arg.username);
|
PrivilegeRemoveUserCommand cmd = new PrivilegeRemoveUserCommand(tx);
|
||||||
privilegeHandler.persist(getCertificate());
|
cmd.setUsername(arg.username);
|
||||||
|
tx.addCommand(cmd);
|
||||||
|
|
||||||
Audit audit = tx
|
tx.commitOnClose();
|
||||||
.auditFrom(AccessType.DELETE, StrolchPrivilegeConstants.PRIVILEGE, StrolchPrivilegeConstants.USER,
|
|
||||||
user.getUsername());
|
|
||||||
tx.getAuditTrail().add(tx, audit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PrivilegeUserResult(user);
|
return ServiceResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue