Security implementation

This commit is contained in:
harish
2024-08-21 18:21:20 +05:30
parent 324490da69
commit 7a080504aa
30 changed files with 721 additions and 78 deletions

View File

@@ -1,12 +1,19 @@
package net.gepafin.tendermanagement.service;
import net.gepafin.tendermanagement.model.request.LoginReq;
import net.gepafin.tendermanagement.model.request.UpdateUserReq;
import net.gepafin.tendermanagement.model.request.UserReq;
import net.gepafin.tendermanagement.model.response.UserResponseBean;
import net.gepafin.tendermanagement.model.util.JWTToken;
public interface UserService {
UserResponseBean createUser(UserReq userReq);
UserResponseBean updateUser(Long userId, UpdateUserReq userReq);
UserResponseBean getUserById(Long userId);
void deleteUser(Long userId);
JWTToken login(LoginReq loginReq);
}

View File

@@ -0,0 +1,60 @@
package net.gepafin.tendermanagement.service.impl;
import net.gepafin.tendermanagement.config.Translator;
import net.gepafin.tendermanagement.config.jwt.TokenProvider;
import net.gepafin.tendermanagement.constants.GepafinConstant;
import net.gepafin.tendermanagement.dao.RoleDao;
import net.gepafin.tendermanagement.entities.UserEntity;
import net.gepafin.tendermanagement.model.request.LoginReq;
import net.gepafin.tendermanagement.model.response.LoginResponse;
import net.gepafin.tendermanagement.model.response.RoleResponseBean;
import net.gepafin.tendermanagement.model.util.JWTToken;
import net.gepafin.tendermanagement.repositories.UserRepository;
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import java.util.Collections;
@Service
public class AuthenticationService {
private final TokenProvider tokenProvider;
private final AuthenticationManager authenticationManager;
@Autowired
private UserRepository userRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private RoleDao roleDao;
@Autowired
public AuthenticationService(TokenProvider tokenProvider, AuthenticationManager authenticationManager) {
this.tokenProvider = tokenProvider;
this.authenticationManager = authenticationManager;
}
public JWTToken login(LoginReq loginReq) {
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginReq.getEmail(),loginReq.getPassword());
Authentication authentication = this.authenticationManager.authenticate(authenticationToken);
SecurityContextHolder.getContext().setAuthentication(authentication);
String token = tokenProvider.createToken(authentication,loginReq.getRememberMe());
UserEntity user = userRepository.findByEmail(loginReq.getEmail());
if (user == null) {
throw new CustomValidationException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.USER_NOT_FOUND_MSG));
}
RoleResponseBean roleResponseBean = roleDao.convertRoleEntityToRoleResponse(user.getRoleEntity());
return new JWTToken(token, new LoginResponse(user.getId(),user.getEmail(),
user.getFirstName(),user.getLastName(),roleResponseBean, user.getPhoneNumber(), user.getAddress(), user.getOrganization(), user.getCountry(),user.getStatus()
,user.getCity(),user.getLastLogin(),user.getCreatedDate(),user.getUpdatedDate()));
}
}

View File

@@ -10,6 +10,8 @@ import net.gepafin.tendermanagement.model.request.UpdateRegionReq;
import net.gepafin.tendermanagement.service.RegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class RegionServiceImpl implements RegionService {
@@ -17,26 +19,31 @@ public class RegionServiceImpl implements RegionService {
private RegionDao regionDao;
@Override
@Transactional(rollbackFor = Exception.class)
public RegionResponseBean createRegion(RegionReq regionReq) {
return regionDao.createRegion(regionReq);
}
@Override
@Transactional(rollbackFor = Exception.class)
public RegionResponseBean updateRegion(Long regionId, RegionReq regionReq) {
return regionDao.updateRegion(regionId,regionReq);
}
@Override
@Transactional(readOnly = true)
public RegionEntity getRegionById(Long regionId) {
return regionDao.getRegionById(regionId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteRegion(Long regionId) {
regionDao.deleteById(regionId);
}
@Override
@Transactional(readOnly = true)
public List<RegionResponseBean> getAllRegions() {
return regionDao.getAllRegions();
}

View File

@@ -9,6 +9,7 @@ import net.gepafin.tendermanagement.model.response.RoleResponseBean;
import net.gepafin.tendermanagement.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@@ -18,25 +19,30 @@ public class RoleServiceImpl implements RoleService {
private RoleDao roleDao;
@Override
@Transactional(rollbackFor = Exception.class)
public RoleResponseBean createRole(RoleReq roleReq) {
return roleDao.createRole(roleReq);
}
@Override
@Transactional(rollbackFor = Exception.class)
public RoleResponseBean updateRole(Long roleId, RoleReq roleReq) {
return roleDao.updateRole(roleId,roleReq);
}
@Override
@Transactional(readOnly = true)
public RoleEntity getRoleById(Long roleId) {
return roleDao.getRoleById(roleId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteRole(Long roleId) {
roleDao.deleteById(roleId);
}
@Override
@Transactional(readOnly = true)
public List<RoleResponseBean> getAllRoles() {
return roleDao.getAllRoles();

View File

@@ -1,12 +1,16 @@
package net.gepafin.tendermanagement.service.impl;
import net.gepafin.tendermanagement.dao.UserDao;
import net.gepafin.tendermanagement.model.request.LoginReq;
import net.gepafin.tendermanagement.model.request.UpdateUserReq;
import net.gepafin.tendermanagement.model.request.UserReq;
import net.gepafin.tendermanagement.model.response.LoginResponse;
import net.gepafin.tendermanagement.model.response.UserResponseBean;
import net.gepafin.tendermanagement.model.util.JWTToken;
import net.gepafin.tendermanagement.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.format.DateTimeFormatter;
@@ -15,24 +19,35 @@ public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Transactional(rollbackFor = Exception.class)
public UserResponseBean createUser(UserReq userReq) {
return userDao.createUser(userReq);
}
@Override
@Transactional(rollbackFor = Exception.class)
public UserResponseBean updateUser(Long userId, UpdateUserReq userReq) {
return userDao.updateUser(userId, userReq);
}
@Override
@Transactional(readOnly = true)
public UserResponseBean getUserById(Long userId) {
return userDao.getUserById(userId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteUser(Long userId) {
userDao.deleteUser(userId);
}
}
@Override
public JWTToken login(LoginReq loginReq) {
return userDao.login(loginReq);
}
}