diff --git a/src/main/java/org/codiki/account/AccountController.java b/src/main/java/org/codiki/account/AccountController.java index efa79a6..373b8fa 100755 --- a/src/main/java/org/codiki/account/AccountController.java +++ b/src/main/java/org/codiki/account/AccountController.java @@ -82,4 +82,9 @@ public class AccountController { pResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED); } } + + @PostMapping("/signin") + public UserDTO signin(@RequestBody final UserDTO pUser, final HttpServletResponse pResponse) throws IOException { + return accountService.signin(pUser, pResponse); + } } diff --git a/src/main/java/org/codiki/account/AccountService.java b/src/main/java/org/codiki/account/AccountService.java index 163feda..cf9aa96 100755 --- a/src/main/java/org/codiki/account/AccountService.java +++ b/src/main/java/org/codiki/account/AccountService.java @@ -1,6 +1,7 @@ package org.codiki.account; import java.io.IOException; +import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Optional; @@ -121,4 +122,22 @@ public class AccountService { return result; } + + public UserDTO signin(final UserDTO pUser, final HttpServletResponse pResponse) throws IOException { + User user = new User(); + + if(pUser.getName() == null || pUser.getEmail() == null || pUser.getPassword() == null || "".equals(pUser.getPassword().trim())) { + pResponse.sendError(HttpServletResponse.SC_BAD_REQUEST); + } else if(userRepository.findByEmail(pUser.getEmail()).isPresent()) { + pResponse.sendError(HttpServletResponse.SC_CONFLICT); + } else { + user.setName(pUser.getName()); + user.setEmail(pUser.getEmail()); + user.setPassword(StringUtils.hashPassword(pUser.getPassword())); + user.setInscriptionDate(new Date()); + userRepository.save(user); + } + + return new UserDTO(user); + } } diff --git a/src/main/java/org/codiki/core/entities/persistence/User.java b/src/main/java/org/codiki/core/entities/persistence/User.java index 48d58f8..5a66591 100755 --- a/src/main/java/org/codiki/core/entities/persistence/User.java +++ b/src/main/java/org/codiki/core/entities/persistence/User.java @@ -21,6 +21,8 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import org.codiki.core.entities.security.Token; +import org.hibernate.annotations.Generated; +import org.hibernate.annotations.GenerationTime; @Entity @Table(name="`user`") @@ -35,6 +37,8 @@ public class User implements Serializable { @SequenceGenerator(name="user_id_seq", sequenceName="user_id_seq", allocationSize=1) private Long id; + // This annotation serves to fetch the attribute after an insert into db + @Generated(GenerationTime.ALWAYS) private String key; private String name;