Bugfixes
parent
bd7fa4bbec
commit
77086c84c1
|
|
@ -59,6 +59,7 @@ import javax.persistence.NamedQueries;
|
|||
import javax.persistence.NamedQuery;
|
||||
import javax.persistence.NamedSubgraph;
|
||||
import javax.persistence.OneToMany;
|
||||
import javax.persistence.OrderBy;
|
||||
import javax.persistence.Table;
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
|
@ -186,6 +187,7 @@ public class User extends Party implements Serializable, Exportable {
|
|||
* Additional email addresses of the user.
|
||||
*/
|
||||
@ElementCollection(fetch = FetchType.EAGER)
|
||||
@OrderBy("address")
|
||||
@CollectionTable(name = "USER_EMAIL_ADDRESSES",
|
||||
schema = DB_SCHEMA,
|
||||
joinColumns = {
|
||||
|
|
@ -363,36 +365,37 @@ public class User extends Party implements Serializable, Exportable {
|
|||
|
||||
@Override
|
||||
public JsonObjectBuilder buildJson() {
|
||||
final JsonArrayBuilder emailAddressesArrayBuilder = Json.createArrayBuilder();
|
||||
|
||||
final JsonArrayBuilder emailAddressesArrayBuilder = Json
|
||||
.createArrayBuilder();
|
||||
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.forEach(emailAddressesArrayBuilder::add);
|
||||
|
||||
|
||||
return super
|
||||
.buildJson()
|
||||
.add("givenName", givenName)
|
||||
.add("familyName", familyName)
|
||||
.add("primaryEmailAddress", primaryEmailAddress.buildJson())
|
||||
.add(
|
||||
"emailAddresses",
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
)
|
||||
.add("banned", banned)
|
||||
.add("passwordResetRequired", passwordResetRequired)
|
||||
.add(
|
||||
"groupMemberships",
|
||||
groupMemberships
|
||||
.stream()
|
||||
.map(GroupMembership::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
);
|
||||
.add(
|
||||
"emailAddresses",
|
||||
emailAddresses
|
||||
.stream()
|
||||
.map(EmailAddress::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
)
|
||||
.add("banned", banned)
|
||||
.add("passwordResetRequired", passwordResetRequired)
|
||||
.add(
|
||||
"groupMemberships",
|
||||
groupMemberships
|
||||
.stream()
|
||||
.map(GroupMembership::buildJson)
|
||||
.map(JsonObjectBuilder::build)
|
||||
.collect(new JsonArrayCollector())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -37,12 +37,9 @@ import javax.enterprise.context.RequestScoped;
|
|||
import javax.inject.Inject;
|
||||
import javax.mvc.Controller;
|
||||
import javax.mvc.Models;
|
||||
import javax.mvc.binding.MvcBinding;
|
||||
import javax.mvc.binding.BindingResult;
|
||||
import javax.transaction.Transactional;
|
||||
import javax.validation.constraints.Email;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.ws.rs.FormParam;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
|
|
@ -53,12 +50,16 @@ import javax.ws.rs.PathParam;
|
|||
*/
|
||||
@RequestScoped
|
||||
@Controller
|
||||
@Path("/users-groups-roles/users/{userIdentifier}/email-addresses")
|
||||
@Path(
|
||||
"/users-groups-roles/users/{userIdentifier}/email-addresses/{emailIdentifier}/save")
|
||||
public class EmailFormController {
|
||||
|
||||
@Inject
|
||||
private AdminMessages adminMessages;
|
||||
|
||||
@Inject
|
||||
private BindingResult bindingResult;
|
||||
|
||||
@Inject
|
||||
private EmailFormModel emailFormModel;
|
||||
|
||||
|
|
@ -74,40 +75,27 @@ public class EmailFormController {
|
|||
@Inject
|
||||
private UserRepository userRepository;
|
||||
|
||||
// @MvcBinding
|
||||
// @FormParam("address")
|
||||
// MVC does not work with Krazo 1.1.0-M1
|
||||
// @MvcBinding
|
||||
@FormParam("address")
|
||||
// @NotBlank
|
||||
// @Email
|
||||
// private String address;
|
||||
//
|
||||
// @FormParam("bouncing")
|
||||
// private boolean bouncing;
|
||||
//
|
||||
// @FormParam("verified")
|
||||
// private boolean verified;
|
||||
private String address;
|
||||
|
||||
@GET
|
||||
@Path("/new")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String getNewEmailAddressForm(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam
|
||||
) {
|
||||
emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
emailFormModel.setAddress("example@example.org");
|
||||
emailFormModel.setBouncing(false);
|
||||
emailFormModel.setVerified(false);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
@FormParam("bouncing")
|
||||
private String bouncingParam;
|
||||
|
||||
@FormParam("verified")
|
||||
private String verifiedParam;
|
||||
|
||||
@POST
|
||||
@Path("/new")
|
||||
@Path("/")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String addNewEmailAddress(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam
|
||||
public String saveEmailAddress(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam,
|
||||
@PathParam("emailIdentifier") final String emailIdentifierParam
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
userIdentifierParam
|
||||
|
|
@ -132,11 +120,86 @@ public class EmailFormController {
|
|||
if (result.isPresent()) {
|
||||
final User user = result.get();
|
||||
|
||||
final EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress(emailFormModel.getAddress());
|
||||
emailAddress.setBouncing(emailAddress.isBouncing());
|
||||
emailAddress.setVerified(emailFormModel.isVerified());
|
||||
user.addEmailAddress(emailAddress);
|
||||
// MVC Binding does not work with Krazo 1.1.0-M1
|
||||
// if (bindingResult.isFailed()) {
|
||||
// models.put("errors", bindingResult.getAllMessages());
|
||||
// emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
// emailFormModel.setAddress(address);
|
||||
// emailFormModel.setBouncing(bouncing);
|
||||
// emailFormModel.setVerified(verified);
|
||||
//
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
// }
|
||||
if (address == null || address.matches("\\s*")) {
|
||||
emailFormModel.addMessage(
|
||||
new Message(
|
||||
"usergroupsroles.users.user_details.email_addresses.errors.address_empty",
|
||||
MessageType.DANGER)
|
||||
);
|
||||
emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
emailFormModel.setAddress(address);
|
||||
emailFormModel.setBouncing(bouncingParam != null);
|
||||
emailFormModel.setVerified(verifiedParam != null);
|
||||
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
|
||||
if ("new".equals(emailIdentifierParam)) {
|
||||
return addEmailAddress(user);
|
||||
} else {
|
||||
return updateEmailAddress(
|
||||
userIdentifierParam,
|
||||
user,
|
||||
Integer.parseInt(emailIdentifierParam)
|
||||
);
|
||||
}
|
||||
|
||||
} else {
|
||||
userDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.getMessage(
|
||||
"usersgroupsroles.users.not_found.message",
|
||||
Arrays.asList(userIdentifierParam)
|
||||
),
|
||||
MessageType.WARNING
|
||||
)
|
||||
);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
}
|
||||
}
|
||||
|
||||
private String addEmailAddress(final User user) {
|
||||
final EmailAddress emailAddress = new EmailAddress();
|
||||
emailAddress.setAddress(address);
|
||||
emailAddress.setBouncing(bouncingParam != null);
|
||||
emailAddress.setVerified(verifiedParam != null);
|
||||
user.addEmailAddress(emailAddress);
|
||||
|
||||
userRepository.save(user);
|
||||
|
||||
return String.format(
|
||||
"redirect:/users-groups-roles/users/%s/details",
|
||||
user.getName()
|
||||
);
|
||||
}
|
||||
|
||||
private String updateEmailAddress(
|
||||
final String userIdentifierParam,
|
||||
final User user,
|
||||
final int emailId
|
||||
) {
|
||||
if (user.getEmailAddresses().size() <= emailId) {
|
||||
models.put("error.userIdentifier", userIdentifierParam);
|
||||
models.put("error.emailId", emailId);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-not-found.xhtml";
|
||||
} else {
|
||||
final EmailAddress emailAddress = user
|
||||
.getEmailAddresses()
|
||||
.get(emailId);
|
||||
|
||||
emailAddress.setAddress(address);
|
||||
emailAddress.setBouncing(bouncingParam != null);
|
||||
emailAddress.setVerified(verifiedParam != null);
|
||||
|
||||
userRepository.save(user);
|
||||
|
||||
|
|
@ -144,143 +207,148 @@ public class EmailFormController {
|
|||
"redirect:/users-groups-roles/users/%s/details",
|
||||
user.getName()
|
||||
);
|
||||
} else {
|
||||
userDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.getMessage(
|
||||
"usersgroupsroles.users.not_found.message",
|
||||
Arrays.asList(userIdentifierParam)
|
||||
),
|
||||
MessageType.WARNING
|
||||
)
|
||||
);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{emailId}")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String getEditEmailAddressForm(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam,
|
||||
@PathParam("emailId") final int emailId
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
userIdentifierParam
|
||||
);
|
||||
final Optional<User> result;
|
||||
switch (identifier.getType()) {
|
||||
case ID:
|
||||
result = userRepository.findById(
|
||||
Long.parseLong(identifier.getIdentifier())
|
||||
);
|
||||
break;
|
||||
case UUID:
|
||||
result = userRepository.findByUuid(
|
||||
identifier.getIdentifier()
|
||||
);
|
||||
break;
|
||||
default:
|
||||
result = userRepository.findByName(identifier.getIdentifier());
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.isPresent()) {
|
||||
final User user = result.get();
|
||||
|
||||
if (user.getEmailAddresses().size() <= emailId) {
|
||||
models.put("error.userIdentifier", userIdentifierParam);
|
||||
models.put("error.emailId", emailId);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-not-found.xhtml";
|
||||
} else {
|
||||
final EmailAddress emailAddress = user
|
||||
.getEmailAddresses()
|
||||
.get(emailId);
|
||||
emailFormModel.setEmailId(emailId);
|
||||
emailFormModel.setAddress(emailAddress.getAddress());
|
||||
emailFormModel.setBouncing(emailAddress.isBouncing());
|
||||
emailFormModel.setVerified(emailAddress.isVerified());
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
} else {
|
||||
userDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.getMessage(
|
||||
"usersgroupsroles.users.not_found.message",
|
||||
Arrays.asList(userIdentifierParam)
|
||||
),
|
||||
MessageType.WARNING
|
||||
)
|
||||
);
|
||||
|
||||
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/{emailId}")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String updateEmailAddress(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam,
|
||||
@PathParam("emailId") final int emailId
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
userIdentifierParam
|
||||
);
|
||||
final Optional<User> result;
|
||||
switch (identifier.getType()) {
|
||||
case ID:
|
||||
result = userRepository.findById(
|
||||
Long.parseLong(identifier.getIdentifier())
|
||||
);
|
||||
break;
|
||||
case UUID:
|
||||
result = userRepository.findByUuid(
|
||||
identifier.getIdentifier()
|
||||
);
|
||||
break;
|
||||
default:
|
||||
result = userRepository.findByName(identifier.getIdentifier());
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.isPresent()) {
|
||||
final User user = result.get();
|
||||
|
||||
if (user.getEmailAddresses().size() <= emailId) {
|
||||
models.put("error.userIdentifier", userIdentifierParam);
|
||||
models.put("error.emailId", emailId);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-not-found.xhtml";
|
||||
} else {
|
||||
final EmailAddress emailAddress = user
|
||||
.getEmailAddresses()
|
||||
.get(emailId);
|
||||
|
||||
emailAddress.setAddress(emailFormModel.getAddress());
|
||||
emailAddress.setBouncing(emailFormModel.isBouncing());
|
||||
emailAddress.setVerified(emailFormModel.isVerified());
|
||||
|
||||
userRepository.save(user);
|
||||
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
} else {
|
||||
userDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.getMessage(
|
||||
"usersgroupsroles.users.not_found.message",
|
||||
Arrays.asList(userIdentifierParam)
|
||||
),
|
||||
MessageType.WARNING
|
||||
)
|
||||
);
|
||||
|
||||
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
}
|
||||
}
|
||||
|
||||
// @POST
|
||||
// @Path("/users-groups-roles/users/{userIdentifier}/email-addresses/new")
|
||||
// @AuthorizationRequired
|
||||
// @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
// @Transactional(Transactional.TxType.REQUIRED)
|
||||
// public String addNewEmailAddress(
|
||||
// @PathParam("userIdentifier") final String userIdentifierParam
|
||||
// ) {
|
||||
// final Identifier identifier = identifierParser.parseIdentifier(
|
||||
// userIdentifierParam
|
||||
// );
|
||||
// final Optional<User> result;
|
||||
// switch (identifier.getType()) {
|
||||
// case ID:
|
||||
// result = userRepository.findById(
|
||||
// Long.parseLong(identifier.getIdentifier())
|
||||
// );
|
||||
// break;
|
||||
// case UUID:
|
||||
// result = userRepository.findByUuid(
|
||||
// identifier.getIdentifier()
|
||||
// );
|
||||
// break;
|
||||
// default:
|
||||
// result = userRepository.findByName(identifier.getIdentifier());
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (result.isPresent()) {
|
||||
// final User user = result.get();
|
||||
//
|
||||
// if (bindingResult.isFailed()) {
|
||||
// models.put("errors", bindingResult.getAllMessages());
|
||||
// emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
// emailFormModel.setAddress(address);
|
||||
// emailFormModel.setBouncing(bouncing);
|
||||
// emailFormModel.setVerified(verified);
|
||||
//
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
// }
|
||||
//
|
||||
// final EmailAddress emailAddress = new EmailAddress();
|
||||
// emailAddress.setAddress(address);
|
||||
// emailAddress.setBouncing(bouncing);
|
||||
// emailAddress.setVerified(verified);
|
||||
// user.addEmailAddress(emailAddress);
|
||||
//
|
||||
// userRepository.save(user);
|
||||
//
|
||||
// return String.format(
|
||||
// "redirect:/users-groups-roles/users/%s/details",
|
||||
// user.getName()
|
||||
// );
|
||||
// } else {
|
||||
// userDetailsModel.addMessage(
|
||||
// new Message(
|
||||
// adminMessages.getMessage(
|
||||
// "usersgroupsroles.users.not_found.message",
|
||||
// Arrays.asList(userIdentifierParam)
|
||||
// ),
|
||||
// MessageType.WARNING
|
||||
// )
|
||||
// );
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @POST
|
||||
// @Path("/users-groups-roles/users/{userIdentifier}/email-addresses/{emailId}")
|
||||
// @AuthorizationRequired
|
||||
// @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
// @Transactional(Transactional.TxType.REQUIRED)
|
||||
// public String updateEmailAddress(
|
||||
// @PathParam("userIdentifier") final String userIdentifierParam,
|
||||
// @PathParam("emailId") final int emailId
|
||||
// ) {
|
||||
// final Identifier identifier = identifierParser.parseIdentifier(
|
||||
// userIdentifierParam
|
||||
// );
|
||||
// final Optional<User> result;
|
||||
// switch (identifier.getType()) {
|
||||
// case ID:
|
||||
// result = userRepository.findById(
|
||||
// Long.parseLong(identifier.getIdentifier())
|
||||
// );
|
||||
// break;
|
||||
// case UUID:
|
||||
// result = userRepository.findByUuid(
|
||||
// identifier.getIdentifier()
|
||||
// );
|
||||
// break;
|
||||
// default:
|
||||
// result = userRepository.findByName(identifier.getIdentifier());
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// if (result.isPresent()) {
|
||||
// final User user = result.get();
|
||||
//
|
||||
// if (bindingResult.isFailed()) {
|
||||
// models.put("errors", bindingResult.getAllMessages());
|
||||
// emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
// emailFormModel.setEmailId(emailId);
|
||||
// emailFormModel.setAddress(address);
|
||||
// emailFormModel.setBouncing(bouncing);
|
||||
// emailFormModel.setVerified(verified);
|
||||
//
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
// }
|
||||
//
|
||||
// if (user.getEmailAddresses().size() <= emailId) {
|
||||
// models.put("error.userIdentifier", userIdentifierParam);
|
||||
// models.put("error.emailId", emailId);
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/email-not-found.xhtml";
|
||||
// } else {
|
||||
// final EmailAddress emailAddress = user
|
||||
// .getEmailAddresses()
|
||||
// .get(emailId);
|
||||
//
|
||||
// emailAddress.setAddress(address);
|
||||
// emailAddress.setBouncing(bouncing);
|
||||
// emailAddress.setVerified(verified);
|
||||
//
|
||||
// userRepository.save(user);
|
||||
//
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
// }
|
||||
// } else {
|
||||
// userDetailsModel.addMessage(
|
||||
// new Message(
|
||||
// adminMessages.getMessage(
|
||||
// "usersgroupsroles.users.not_found.message",
|
||||
// Arrays.asList(userIdentifierParam)
|
||||
// ),
|
||||
// MessageType.WARNING
|
||||
// )
|
||||
// );
|
||||
//
|
||||
// return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@
|
|||
package org.libreccm.ui.admin.usersgroupsroles;
|
||||
|
||||
import org.libreccm.core.EmailAddress;
|
||||
import org.libreccm.ui.Message;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Named;
|
||||
|
|
@ -40,6 +45,24 @@ public class EmailFormModel {
|
|||
private boolean bouncing;
|
||||
|
||||
private boolean verified;
|
||||
|
||||
private List<Message> messages;
|
||||
|
||||
public EmailFormModel() {
|
||||
this.messages = new ArrayList<>();
|
||||
}
|
||||
|
||||
public List<Message> getMessages() {
|
||||
return Collections.unmodifiableList(messages);
|
||||
}
|
||||
|
||||
public void addMessage(final Message message) {
|
||||
messages.add(message);
|
||||
}
|
||||
|
||||
public void setMessages(final List<Message> messages) {
|
||||
this.messages = new ArrayList<>(messages);
|
||||
}
|
||||
|
||||
public void setEmailAddress(
|
||||
final String userIdentifier,
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ package org.libreccm.ui.admin.usersgroupsroles;
|
|||
import org.libreccm.api.Identifier;
|
||||
import org.libreccm.api.IdentifierParser;
|
||||
import org.libreccm.core.CoreConstants;
|
||||
import org.libreccm.core.EmailAddress;
|
||||
import org.libreccm.security.AuthorizationRequired;
|
||||
import org.libreccm.security.RequiresPrivilege;
|
||||
import org.libreccm.security.User;
|
||||
|
|
@ -35,6 +36,7 @@ import java.util.Optional;
|
|||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import javax.mvc.Controller;
|
||||
import javax.mvc.Models;
|
||||
import javax.mvc.MvcContext;
|
||||
import javax.transaction.Transactional;
|
||||
import javax.ws.rs.DefaultValue;
|
||||
|
|
@ -57,9 +59,15 @@ public class UsersController {
|
|||
@Inject
|
||||
private AdminMessages adminMessages;
|
||||
|
||||
@Inject
|
||||
private EmailFormModel emailFormModel;
|
||||
|
||||
@Inject
|
||||
private IdentifierParser identifierParser;
|
||||
|
||||
@Inject
|
||||
private Models models;
|
||||
|
||||
@Inject
|
||||
private MvcContext mvc;
|
||||
|
||||
|
|
@ -233,6 +241,80 @@ public class UsersController {
|
|||
}
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{userIdentifier}/email-addresses/new")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String getNewEmailAddressForm(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam
|
||||
) {
|
||||
emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
|
||||
@GET
|
||||
@Path("/{userIdentifier}/email-addresses/{emailId}")
|
||||
@AuthorizationRequired
|
||||
@RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN)
|
||||
@Transactional(Transactional.TxType.REQUIRED)
|
||||
public String getEditEmailAddressForm(
|
||||
@PathParam("userIdentifier") final String userIdentifierParam,
|
||||
@PathParam("emailId") final int emailId
|
||||
) {
|
||||
final Identifier identifier = identifierParser.parseIdentifier(
|
||||
userIdentifierParam
|
||||
);
|
||||
final Optional<User> result;
|
||||
switch (identifier.getType()) {
|
||||
case ID:
|
||||
result = userRepository.findById(
|
||||
Long.parseLong(identifier.getIdentifier())
|
||||
);
|
||||
break;
|
||||
case UUID:
|
||||
result = userRepository.findByUuid(
|
||||
identifier.getIdentifier()
|
||||
);
|
||||
break;
|
||||
default:
|
||||
result = userRepository.findByName(identifier.getIdentifier());
|
||||
break;
|
||||
}
|
||||
|
||||
if (result.isPresent()) {
|
||||
final User user = result.get();
|
||||
|
||||
if (user.getEmailAddresses().size() <= emailId) {
|
||||
models.put("errorUserIdentifier", userIdentifierParam);
|
||||
models.put("errorEmailId", emailId);
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-not-found.xhtml";
|
||||
} else {
|
||||
final EmailAddress emailAddress = user
|
||||
.getEmailAddresses()
|
||||
.get(emailId);
|
||||
emailFormModel.setUserIdentifier(userIdentifierParam);
|
||||
emailFormModel.setEmailId(emailId);
|
||||
emailFormModel.setAddress(emailAddress.getAddress());
|
||||
emailFormModel.setBouncing(emailAddress.isBouncing());
|
||||
emailFormModel.setVerified(emailAddress.isVerified());
|
||||
return "org/libreccm/ui/admin/users-groups-roles/email-form.xhtml";
|
||||
}
|
||||
} else {
|
||||
userDetailsModel.addMessage(
|
||||
new Message(
|
||||
adminMessages.getMessage(
|
||||
"usersgroupsroles.users.not_found.message",
|
||||
Arrays.asList(userIdentifierParam)
|
||||
),
|
||||
MessageType.WARNING
|
||||
)
|
||||
);
|
||||
|
||||
return "org/libreccm/ui/admin/users-groups-roles/user-not-found.xhtml";
|
||||
}
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/{userIdentifier}/email-addresses/{emailId}/remove")
|
||||
@AuthorizationRequired
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
<ui:param name="activePage" value="usersgroupsroles" />
|
||||
<ui:param name="activePanel" value="users" />
|
||||
<ui:param name="title"
|
||||
value="#{EmailFormModel.new ? AdminMessages.getMessage('usersgroupsroles.users.email.edit.title', [UserDetailsModel.name]) : AdminMessages['usersgroupsroles.users.email.add.title']}" />
|
||||
|
||||
value="#{EmailFormModel.new ? AdminMessages['usersgroupsroles.users.email.add.title'] : AdminMessages.getMessage('usersgroupsroles.users.email.edit.title', [UserDetailsModel.name])}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.uri('UsersGroupsRolesController#getOverview')}">
|
||||
|
|
@ -29,14 +29,19 @@
|
|||
#{EmailFormModel.new ? AdminMessages['usersgroupsroles.users.breadcrumbs.email.add'] : AdminMessages['usersgroupsroles.users.breadcrumbs.email.edit']}
|
||||
</li>
|
||||
</ui:define>
|
||||
|
||||
|
||||
<ui:define name="panel">
|
||||
<c:forEach items="#{errors}" var="error">
|
||||
<div class="alert alert-danger" role="alert">
|
||||
#{error}
|
||||
</div>
|
||||
</c:forEach>
|
||||
<form action="#{EmailFormModel.new ? mvc.uri('EmailFormController#addNewEmailAddress', {'userIdentifier': EmailFormModel.userIdentifier }) : mvc.uri('EmailFormController#updateEmailAddress', { 'userIdentifier': EmailFormController.userIdentifier, 'emailId': EmailFormModel.emailId })}"
|
||||
<c:forEach items="#{EmailFormModel.messages}" var="message">
|
||||
<div class="alert alert-#{message.messageType}" role="alert">
|
||||
#{AdminMessages[message]}
|
||||
</div>
|
||||
</c:forEach>
|
||||
<form action="#{EmailFormModel.new ? mvc.uri('EmailFormController#saveEmailAddress', {'userIdentifier': EmailFormModel.userIdentifier, 'emailIdentifier': 'new' }) : mvc.uri('EmailFormController#saveEmailAddress', { 'userIdentifier': EmailFormController.userIdentifier, 'emailIdentifier': EmailFormModel.emailId })}"
|
||||
method="post">
|
||||
<div class="form-group">
|
||||
<label for="address">
|
||||
|
|
@ -46,6 +51,7 @@
|
|||
class="form-control"
|
||||
id="address"
|
||||
name="address"
|
||||
required="required"
|
||||
value="#{EmailFormModel.address}"
|
||||
type="email" />
|
||||
<small class="form-text text-muted"
|
||||
|
|
@ -54,7 +60,8 @@
|
|||
</small>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
<input checked="#{EmailFormModel.bouncing ? 'checked' : ''}"
|
||||
class="form-check-input"
|
||||
id="bouncing"
|
||||
name="bouncing"
|
||||
type="checkbox"
|
||||
|
|
@ -64,11 +71,11 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input"
|
||||
<input checked="#{EmailFormModel.verified ? 'checked' : ''}"
|
||||
class="form-check-input"
|
||||
id="verified"
|
||||
name="verified"
|
||||
type="checkbox"
|
||||
value="#{EmailFormModel.verified}" />
|
||||
type="checkbox" />
|
||||
<label for="verified">
|
||||
#{AdminMessages['usersgroupsroles.users.email.form.verified.label']}
|
||||
</label>
|
||||
|
|
@ -85,6 +92,6 @@
|
|||
</button>
|
||||
</form>
|
||||
</ui:define>
|
||||
|
||||
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<ui:param name="activePage" value="usersgroupsroles" />
|
||||
<ui:param name="activePanel" value="users" />
|
||||
<ui:param name="title"
|
||||
value="#{AdminMessages('usersgroupsroles.users.email.not_found.title')}" />
|
||||
value="#{AdminMessages['usersgroupsroles.users.email.not_found.title']}" />
|
||||
|
||||
<ui:define name="breadcrumb">
|
||||
<li class="breadcrumb-item">
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
<ui:define name="panel">
|
||||
|
||||
<div class="alert alert-danger" role="alert">
|
||||
#{AdminMessages.getMessage('usersgroupsroles.users.email.not_found.message', [models['errors.userIdentifier'], models['errors.emailId']])}
|
||||
#{AdminMessages.getMessage('usersgroupsroles.users.email.not_found.message', [errorUserIdentifier, errorEmailId])}
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@
|
|||
</h2>
|
||||
<div>
|
||||
<a class="btn btn-primary"
|
||||
href="#{mvc.uri('EmailFormController#getNewEmailAddressForm', {'userIdentifier': UserDetailsModel.name })}">
|
||||
href="#{mvc.uri('UsersController#getNewEmailAddressForm', {'userIdentifier': UserDetailsModel.name })}">
|
||||
<svg class="bi"
|
||||
width="1em"
|
||||
height="1em"
|
||||
|
|
@ -195,7 +195,7 @@
|
|||
</td>
|
||||
<td>
|
||||
<a class="btn btn-info"
|
||||
href="#{mvc.uri('UsersController#removeEmailAddress', { 'userIdentifier': UserDetailsModel.name, 'emailId': status.index })}">
|
||||
href="#{mvc.uri('UsersController#getEditEmailAddressForm', { 'userIdentifier': UserDetailsModel.name, 'emailId': status.index })}">
|
||||
<svg class="bi"
|
||||
width="1em"
|
||||
height="1em"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
<ui:define name="panel">
|
||||
<c:forEach items="#{UserDetailsModel.messages}" var="message">
|
||||
<div class="alert alert-#{message.type}" role="alert">
|
||||
<div class="alert alert-#{message.messageType}" role="alert">
|
||||
#{message}
|
||||
</div>
|
||||
</c:forEach>
|
||||
|
|
|
|||
|
|
@ -128,3 +128,4 @@ usersgroupsroles.users.user_details.roles.dialog.title=Edit role memberships
|
|||
usersgroupsroles.users.user_details.roles.dialog.close=Cancel
|
||||
usersgroupsroles.users.user_details.groups.dialog.save=Save
|
||||
usergroupsroles.users.user_details.family_name=Family Name
|
||||
usergroupsroles.users.user_details.email_addresses.errors.address_empty=Address can't be empty
|
||||
|
|
|
|||
|
|
@ -128,3 +128,4 @@ usersgroupsroles.users.user_details.roles.dialog.title=Rollenmitgliedschaften be
|
|||
usersgroupsroles.users.user_details.roles.dialog.close=Abbrechen
|
||||
usersgroupsroles.users.user_details.groups.dialog.save=Anwenden
|
||||
usergroupsroles.users.user_details.family_name=Familienname
|
||||
usergroupsroles.users.user_details.email_addresses.errors.address_empty=Die Addresse kann nicht leer sein
|
||||
|
|
|
|||
Loading…
Reference in New Issue