Signup APi

Wasi/BS-1344
Wasiullah Khan 3 days ago
parent fc07a8e88f
commit da14c7c846

@ -2,7 +2,10 @@ package com.mfsys.common.configuration.constant;
import com.mfsys.common.configuration.exception.ErrorMessage;
public enum ERRCode implements ErrorMessage {;
public enum ERRCode implements ErrorMessage {
USER_ALREADY_EXISTS("ERR_001", "User already exists"),
;
private String code;
private String description;

@ -7,6 +7,7 @@ import java.util.List;
public interface TokenBypassURI {
List<String> URIs = new ArrayList<String>(Arrays.asList(
"/aconnect/signin",
"/aconnect/authentication/signup",
"/aconnect/transactions/accounttogl",
"/aconnect/account/miscDetails",
"/deposit/account/miscDetails",

@ -0,0 +1,26 @@
package com.mfsys.common.configuration.exception;
import com.mfsys.common.configuration.constant.ERRCode;
public class UserAlreadyExistsException extends ApplicationException{
private static final String POR_ORGA_CODE = "DEFAULT";
public UserAlreadyExistsException() {
super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS);
}
public UserAlreadyExistsException(Throwable cause) {
super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, cause);
}
public UserAlreadyExistsException(String message) {
super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, message);
}
public UserAlreadyExistsException(String message, Throwable cause) {
super(POR_ORGA_CODE,ERRCode.USER_ALREADY_EXISTS, message, cause);
}
}

@ -152,6 +152,17 @@
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<spring.profiles.active>${spring.profiles.active}</spring.profiles.active>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
@ -161,9 +172,6 @@
<!-- Development -->
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
@ -183,6 +191,18 @@
</build>
</profile>
<!-- TEST -->
<profile>
<id>test</id>
<properties>
<spring.profiles.active>test</spring.profiles.active>
</properties>
<build>
<finalName>aconnect-test</finalName>
</build>
</profile>
<!-- Live / Production -->
<profile>
<id>live</id>

@ -3,4 +3,5 @@ package com.mfsys.aconnect.security.constant;
public interface SecurityURI {
String AUTHENTICATION = "/authentication";
String LOGIN = "/login";
String SIGNUP = "/signup";
}

@ -3,6 +3,8 @@ package com.mfsys.aconnect.security.controller;
import com.mfsys.aconnect.security.constant.SecurityURI;
import com.mfsys.aconnect.security.dto.LoginRequest;
import com.mfsys.aconnect.security.dto.LoginResponse;
import com.mfsys.aconnect.security.dto.SignupRequest;
import com.mfsys.aconnect.security.dto.SignupResponse;
import com.mfsys.aconnect.security.service.AuthenticationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@ -32,4 +34,9 @@ public class AuthenticationController {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
}
@PostMapping(SecurityURI.SIGNUP)
public ResponseEntity<SignupResponse> signup(@RequestBody SignupRequest request){
SignupResponse response = authenticationService.signup(request);
return ResponseEntity.ok(response);
}
}

@ -0,0 +1,15 @@
package com.mfsys.aconnect.security.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SignupRequest {
private String username;
private String password;
private String email;
private String fullName;
}

@ -0,0 +1,14 @@
package com.mfsys.aconnect.security.dto;
import com.mfsys.aconnect.usermanagement.model.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SignupResponse {
private boolean success;
private String message;
}

@ -1,5 +1,8 @@
package com.mfsys.aconnect.security.service;
import com.mfsys.aconnect.security.dto.SignupRequest;
import com.mfsys.aconnect.security.dto.SignupResponse;
import com.mfsys.common.configuration.exception.UserAlreadyExistsException;
import com.mfsys.common.configuration.service.JwtService;
import com.mfsys.common.configuration.service.PasswordEncryptionService;
import com.mfsys.aconnect.security.dto.LoginRequest;
@ -15,11 +18,13 @@ public class AuthenticationService {
private final UserRepository userRepository;
private final JwtService jwtService;
private final PasswordEncryptionService passwordEncryptionService;
@Autowired
public AuthenticationService (UserRepository userRepository, PasswordEncryptionService passwordEncryptionService,
JwtService jwtService) {
this.userRepository = userRepository;
this.passwordEncryptionService = passwordEncryptionService;
this.jwtService = jwtService;
}
@ -39,4 +44,29 @@ public class AuthenticationService {
return new LoginResponse(user, false, user.getIsFirstLogin(), token);
}
private boolean userAlreadyExists(String userId) {
return userRepository.findByUserIdAndIsActiveTrue(userId).isPresent();
}
@Transactional
public SignupResponse signup(SignupRequest request){
SignupResponse response = new SignupResponse();
if(userAlreadyExists(request.getUsername())){
throw new UserAlreadyExistsException();
}
User user = new User();
user.setUserId(request.getUsername());
user.setPassword(passwordEncryptionService.hashPassword(request.getPassword()));
user.setEmail(request.getEmail());
user.setUserFullname(request.getFullName());
user.setIsActive(true);
user.setIsFirstLogin(true);
userRepository.save(user);
return new SignupResponse(true, "Signup successful");
}
}

@ -1,37 +1,4 @@
spring.application.name = aconnect
app.base.uri=aconnect
app.db.dbname = aconnect
app.db.dbuser=${CMB_SQL_DB_USER}
app.db.dbpassword=${CMB_SQL_DB_PASSWORD}
app.db.url=${CMB_SQL_DB_MACHINE_IP}
app.server.timezone=${APP_SERVER_TIMEZONE}
spring.datasource.username = ${app.db.dbuser}
spring.datasource.password = ${app.db.dbpassword}
spring.datasource.url = jdbc:mysql://${app.db.url}/${app.db.dbname}?createDatabaseIfNotExist=true&serverTimezone=${app.server.timezone}&useLegacyDatetimeCode=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
jwt.secret = mySecretKey123456789012345678901234567890
jwt.expiration = 86400000
jwt.refresh-expiration= 604800000
# Default security URI for dev (fallback for unknown users)
#app.security.uri=http://localhost:9090/security/auth/user
#app.deposit.uri=http://localhost:9095/deposit
## User-specific security URLs for dev environment
#app.security.user.01.uri=http://localhost:9090/security/auth/user
#
#app.security.user.naeem.uri=http://localhost:9091/security/auth/user
#app.security.user.03.uri=http://dev-server-03:9090/security/auth/user
#app.security.user.admin.uri=http://localhost:9092/security/auth/user
#app.security.user.test.uri=http://test-dev-server:9090/security/auth/user
app.deposit.uri=${CMB_DEPOSIT_SERVER_URL}
app.generalledger.uri=${CMB_GL_SERVER_URL}
app.organization.uri=${CMB_ORGA_CODE}
app.security.uri=${CMB_SECURITY_SERVER_URL}/security/auth/user

@ -1,32 +1,3 @@
spring.application.name = aconnect
app.base.uri=aconnect
app.db.dbname = aconnect
app.db.dbuser=${CMB_SQL_DB_USER}
app.db.dbpassword=${CMB_SQL_DB_PASSWORD}
app.db.url=${CMB_SQL_DB_MACHINE_IP}
app.server.timezone=${APP_SERVER_TIMEZONE}
spring.datasource.username = ${app.db.dbuser}
spring.datasource.password = ${app.db.dbpassword}
spring.datasource.url = jdbc:mysql://${app.db.url}/${app.db.dbname}?createDatabaseIfNotExist=true&serverTimezone=${app.server.timezone}&useLegacyDatetimeCode=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
jwt.secret = mySecretKey123456789012345678901234567890
jwt.expiration = 86400000
jwt.refresh-expiration= 604800000
# User-specific security URLs for live environment
#app.security.user.01.uri=https://live-client1-company.com/security/auth/user
#app.security.user.mubashar.uri=https://live-client2-company.com/security/auth/user
#app.security.user.03.uri=https://live-client3-company.com/security/auth/user
#app.security.user.admin.uri=https://live-admin-company.com/security/auth/user
#app.security.user.manager.uri=https://live-manager-company.com/security/auth/user
app.deposit.uri=${CMB_DEPOSIT_SERVER_URL}
app.generalledger.uri=${CMB_GL_SERVER_URL}
app.organization.uri=${CMB_ORGA_CODE}

@ -1,33 +1,4 @@
spring.application.name = aconnect
app.base.uri=aconnect
app.db.dbname = aconnect
app.db.dbuser=${CMB_SQL_DB_USER}
app.db.dbpassword=${CMB_SQL_DB_PASSWORD}
app.db.url=${CMB_SQL_DB_MACHINE_IP}
app.server.timezone=${APP_SERVER_TIMEZONE}
spring.datasource.username = ${app.db.dbuser}
spring.datasource.password = ${app.db.dbpassword}
spring.datasource.url = jdbc:mysql://${app.db.url}/${app.db.dbname}?createDatabaseIfNotExist=true&serverTimezone=${app.server.timezone}&useLegacyDatetimeCode=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
jwt.secret = mySecretKey123456789012345678901234567890
jwt.expiration = 86400000
jwt.refresh-expiration= 604800000
#app.organization.uri = 0005
app.deposit.uri=${CMB_DEPOSIT_SERVER_URL}
app.generalledger.uri=${CMB_GL_SERVER_URL}
app.organization.uri=${CMB_ORGA_CODE}
app.security.uri=${CMB_SECURITY_SERVER_URL}/security/auth/user
#app.security.user.naeem.organization=0005
#app.security.user.naeem.environment=uat
#app.security.uri=http://test-server:9090/security/auth/user
#app.security.user.hamza.uri=http://test-server:9090/security/auth/user

@ -1,31 +1,3 @@
spring.application.name = aconnect
app.base.uri=aconnect
app.db.dbname = aconnect
app.db.dbuser=${CMB_SQL_DB_USER}
app.db.dbpassword=${CMB_SQL_DB_PASSWORD}
app.db.url=${CMB_SQL_DB_MACHINE_IP}
app.server.timezone=${APP_SERVER_TIMEZONE}
spring.datasource.username = ${app.db.dbuser}
spring.datasource.password = ${app.db.dbpassword}
spring.datasource.url = jdbc:mysql://${app.db.url}/${app.db.dbname}?createDatabaseIfNotExist=true&serverTimezone=${app.server.timezone}&useLegacyDatetimeCode=false&useUnicode=yes&characterEncoding=UTF-8&characterSetResults=UTF-8
spring.jpa.properties.hibernate.connection.characterEncoding=utf-8
spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
jwt.secret = mySecretKey123456789012345678901234567890
jwt.expiration = 86400000
jwt.refresh-expiration= 604800000
# User-specific security URLs for uat environment
#app.security.user.01.uri=http://uat-server-01:9090/security/auth/user
#app.security.user.02.uri=http://uat-server-02:9090/security/auth/user
#app.security.user.03.uri=http://uat-server-03:9090/security/auth/user
#app.security.user.admin.uri=http://uat-admin-server:9090/security/auth/user
#app.security.user.qa.uri=http://uat-qa-server:9090/security/auth/user
app.deposit.uri=${CMB_DEPOSIT_SERVER_URL}
app.generalledger.uri=${CMB_GL_SERVER_URL}
app.organization.uri=${CMB_ORGA_CODE}

@ -14,59 +14,10 @@ spring.jpa.properties.hibernate.connection.CharSet=utf-8
spring.jpa.properties.hibernate.connection.useUnicode=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.profiles.active=@spring.profiles.active@
jwt.secret = mySecretKey123456789012345678901234567890
jwt.expiration = 86400000
jwt.refresh-expiration= 604800000
# User to Environment Mapping
#app.user.01.environment=dev
#app.user.02.environment=dev
#app.user.test.environment=dev
#
#app.user.liveuser.environment=live
#app.user.produser.environment=live
#app.user.admin.environment=live
#
#app.user.uatuser.environment=uat
#app.user.qa.environment=uat
# Environment-specific security URLs
#app.environment.dev.securityUri=http://localhost:9090/security/auth/user
#app.environment.uat.securityUri=http://uat-security-server:9090/security/auth/user
#app.environment.live.securityUri=https://live-security-server.com/security/auth/user
# Default environment
#app.environment.default=dev
# ${CMB_SQL_DB_USER}
# ${CMB_SQL_DB_USER}
#app.security.uri=http://localhost:9095/security/auth/user
#app.deposit.uri=http://localhost:9095
#app.generalledger.uri=http://localhost:9093
#app.organization.uri=0005
#app.security.uri=http://localhost:9090/security/auth/user
# ${CMB_SQL_DB_USER}
# ${CMB_SQL_DB_USER}
#app.deposit.uri=http://localhost:9095
#app.generalledger.uri=http://localhost:9093
#app.organization.uri=0005
app.deposit.uri=${CMB_DEPOSIT_SERVER_URL}
app.generalledger.uri=${CMB_GL_SERVER_URL}
app.organization.uri=${CMB_ORGA_CODE}
app.security.uri=${CMB_SECURITY_SERVER_URL}/security/auth/user
# Deposit URLs
#app.environment.dev.depositUri=http://localhost:9095/deposit
#app.environment.uat.depositUri=http://uat-deposit-server:9095/deposit
#app.environment.live.depositUri=https://live-deposit-server.com/deposit
# GL URLs
#app.environment.dev.generalLedgerUri=http://localhost:9093/generalledger
#app.environment.uat.generalLedgerUri=http://uat-gl-server:9093/generalledger
#app.environment.live.generalLedgerUri=https://live-gl-server.com/generalledger
logging.level.org.springframework.core.env=DEBUG

Loading…
Cancel
Save