package com.gr.project.security.service; import com.gr.project.model.Person; import com.gr.project.rest.MessageBuilder; import com.gr.project.security.authorization.AllowedRole; import com.gr.project.security.model.ApplicationRole; import com.gr.project.security.model.IdentityModelManager; import com.gr.project.security.model.MyUser; import com.gr.project.util.EntityValidator; import javax.inject.Inject; import javax.validation.constraints.NotNull; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @javax.ejb.Stateless @Path("/admin") @AllowedRole(ApplicationRole.ADMINISTRATOR) public class AdminService { @Inject private IdentityModelManager identityModelManager; @Inject private EntityValidator validator; @POST @Path("enableAccount") @Produces(MediaType.APPLICATION_JSON) public Response enableAccount(@NotNull Person passedUser) { MessageBuilder message; try { // validate input validator.validateEntity(passedUser); MyUser user = this.identityModelManager.findByLoginName(passedUser.getEmail()); if (user == null) { return MessageBuilder.badRequest().message("Invalid account.").build(); } if(user.isEnabled()) { return MessageBuilder.badRequest().message("Account is already enabled.").build(); } this.identityModelManager.enableAccount(user); message = MessageBuilder.ok().message("Account is now enabled."); } catch (Exception e) { message = MessageBuilder.badRequest().message(e.getMessage()); } return message.build(); } @POST @Path("disableAccount") @Produces(MediaType.APPLICATION_JSON) public Response disableAccount(@NotNull Person passedUser) { MessageBuilder message; try { // validate input validator.validateEntity(passedUser); MyUser user = this.identityModelManager.findByLoginName(passedUser.getEmail()); if (user == null) { return MessageBuilder.badRequest().message("Invalid account.").build(); } if(!user.isEnabled()) { return MessageBuilder.badRequest().message("Accound is already disabled.").build(); } this.identityModelManager.disableAccount(user); message = MessageBuilder.ok().message("Account is now disabled."); } catch (Exception e) { message = MessageBuilder.badRequest().message(e.getMessage()); } return message.build(); } }