diff --git a/src/main/java/com/alist/api/modules/admin/auth/AdminAuthController.java b/src/main/java/com/alist/api/modules/admin/auth/AdminAuthController.java index 1257c1b..53047f4 100644 --- a/src/main/java/com/alist/api/modules/admin/auth/AdminAuthController.java +++ b/src/main/java/com/alist/api/modules/admin/auth/AdminAuthController.java @@ -102,7 +102,8 @@ public class AdminAuthController { result.put("userId", admin.getId()); result.put("userIdx", admin.getUserIdx()); result.put("userTokenIdx", userTokenIdx); - result.put("userRole", "ADMIN"); + result.put("userRole", admin.getUserRole()); + result.put("userType", admin.getUserType()); return ApiResponse.entity(result, ApiResponseCode.CODE_200); } diff --git a/src/main/java/com/alist/api/modules/admin/auth/vo/AdminLoginVo.java b/src/main/java/com/alist/api/modules/admin/auth/vo/AdminLoginVo.java index 306b3e7..732464c 100644 --- a/src/main/java/com/alist/api/modules/admin/auth/vo/AdminLoginVo.java +++ b/src/main/java/com/alist/api/modules/admin/auth/vo/AdminLoginVo.java @@ -10,6 +10,8 @@ public class AdminLoginVo { private boolean isLogin; private Integer userIdx; private String id; + private String userRole; + private String userType; @JsonIgnore private String password; diff --git a/src/main/java/com/alist/api/modules/admin/user/dto/AdminUserDto.java b/src/main/java/com/alist/api/modules/admin/user/dto/AdminUserDto.java index d519528..d2e746e 100644 --- a/src/main/java/com/alist/api/modules/admin/user/dto/AdminUserDto.java +++ b/src/main/java/com/alist/api/modules/admin/user/dto/AdminUserDto.java @@ -10,6 +10,7 @@ public class AdminUserDto { private Integer userIdx; private String id; private String userRole; + private String userType; @JsonIgnore private String newPassword; diff --git a/src/main/java/com/alist/api/modules/admin/user/form/AdminUserSignupForm.java b/src/main/java/com/alist/api/modules/admin/user/form/AdminUserSignupForm.java index 4e45d9e..a766d0f 100644 --- a/src/main/java/com/alist/api/modules/admin/user/form/AdminUserSignupForm.java +++ b/src/main/java/com/alist/api/modules/admin/user/form/AdminUserSignupForm.java @@ -31,15 +31,31 @@ public class AdminUserSignupForm { ) private String password; + @NotBlank(message = "사용자 권한(관리자{A:관리자}") + @Pattern( + regexp = "^A$", + message = "사용자 권한(관리자{A:관리자})" + ) + @Schema( + description = "사용자 권한(관리자{A:관리자})", + example = "A" + ) + private String userRole; + @NotBlank(message = "사용자 구분(A:관리자)") @Pattern(regexp = "^A$", message = "관리자 사용자 구분은 A만 가능합니다.") - private String userRole; + @Schema( + description = "사용자 타입(A:관리자)", + example = "A" + ) + private String userType; public AdminUserDto toAdminUserDto() { AdminUserDto adminUserDto = new AdminUserDto(); adminUserDto.setId(id.trim()); adminUserDto.setPassword(password); adminUserDto.setUserRole(userRole); + adminUserDto.setUserType(userType); return adminUserDto; } } diff --git a/src/main/java/com/alist/api/modules/admin/user/service/AdminUserService.java b/src/main/java/com/alist/api/modules/admin/user/service/AdminUserService.java index 367e172..a874ded 100644 --- a/src/main/java/com/alist/api/modules/admin/user/service/AdminUserService.java +++ b/src/main/java/com/alist/api/modules/admin/user/service/AdminUserService.java @@ -28,6 +28,7 @@ public class AdminUserService { userDto.setId(adminUserDto.getId()); userDto.setPassword(adminUserDto.getPassword()); userDto.setUserRole(adminUserDto.getUserRole()); + userDto.setUserType(adminUserDto.getUserType()); UserVo userVo = userService.insertUser(userDto); @@ -35,6 +36,8 @@ public class AdminUserService { result.setResultCode(userVo.getResultCode()); result.setUserIdx(userVo.getUserIdx()); result.setId(userVo.getId()); + result.setUserRole(userVo.getUserRole()); + result.setUserType(userVo.getUserType()); return result; } diff --git a/src/main/java/com/alist/api/modules/admin/user/vo/AdminUserVo.java b/src/main/java/com/alist/api/modules/admin/user/vo/AdminUserVo.java index b0c6a1e..6461452 100644 --- a/src/main/java/com/alist/api/modules/admin/user/vo/AdminUserVo.java +++ b/src/main/java/com/alist/api/modules/admin/user/vo/AdminUserVo.java @@ -10,6 +10,7 @@ public class AdminUserVo { private Integer userIdx; private String id; private String userRole; + private String userType; @JsonIgnore private String newPassword; diff --git a/src/main/java/com/alist/api/modules/auth/AuthController.java b/src/main/java/com/alist/api/modules/auth/AuthController.java index 3b24aa7..3282769 100644 --- a/src/main/java/com/alist/api/modules/auth/AuthController.java +++ b/src/main/java/com/alist/api/modules/auth/AuthController.java @@ -102,6 +102,7 @@ public class AuthController { result.put("userIdx", ssoSession.getUserIdx()); result.put("userId", ssoSession.getUserId()); result.put("userRole", ssoSession.getUserRole()); + result.put("userType", ssoSession.getUserType()); return ApiResponse.entity(result, ApiResponseCode.CODE_2001, "토큰"); } diff --git a/src/main/java/com/alist/api/modules/auth/SsoController.java b/src/main/java/com/alist/api/modules/auth/SsoController.java index 9ec2ecb..8f6140c 100644 --- a/src/main/java/com/alist/api/modules/auth/SsoController.java +++ b/src/main/java/com/alist/api/modules/auth/SsoController.java @@ -73,7 +73,8 @@ public class SsoController { result.setLoginIn(true); result.setId(ssoLoginDto.getUserId()); result.setUserIdx(ssoLoginDto.getUserIdx()); - result.setRole(ssoLoginDto.getUserRole()); + result.setUserRole(ssoLoginDto.getUserRole()); + result.setUserType(ssoLoginDto.getUserType()); return ApiResponse.entity(result, ApiResponseCode.CODE_2001, "SSO 로그인"); } @@ -112,6 +113,7 @@ public class SsoController { result.put("userIdx", ssoSession.getUserIdx()); result.put("userTokenIdx", ssoSession.getUserTokenIdx()); result.put("userRole", ssoSession.getUserRole()); + result.put("userType", ssoSession.getUserType()); return ApiResponse.entity(result, ApiResponseCode.CODE_200); } diff --git a/src/main/java/com/alist/api/modules/auth/dto/LoginDto.java b/src/main/java/com/alist/api/modules/auth/dto/LoginDto.java index d1aecc4..179bce9 100644 --- a/src/main/java/com/alist/api/modules/auth/dto/LoginDto.java +++ b/src/main/java/com/alist/api/modules/auth/dto/LoginDto.java @@ -22,6 +22,8 @@ public class LoginDto { @JsonIgnore private String userRole; @JsonIgnore + private String userType; + @JsonIgnore private String userApiKey; @JsonIgnore private Integer userTokenIdx; diff --git a/src/main/java/com/alist/api/modules/auth/dto/SsoExchangeDto.java b/src/main/java/com/alist/api/modules/auth/dto/SsoExchangeDto.java index f2388f3..4493aec 100644 --- a/src/main/java/com/alist/api/modules/auth/dto/SsoExchangeDto.java +++ b/src/main/java/com/alist/api/modules/auth/dto/SsoExchangeDto.java @@ -15,4 +15,5 @@ public class SsoExchangeDto { private Integer userTokenIdx; private String userId; private String userRole; + private String userType; } diff --git a/src/main/java/com/alist/api/modules/auth/dto/SsoLoginCheckDto.java b/src/main/java/com/alist/api/modules/auth/dto/SsoLoginCheckDto.java index 0e638ea..efc7818 100644 --- a/src/main/java/com/alist/api/modules/auth/dto/SsoLoginCheckDto.java +++ b/src/main/java/com/alist/api/modules/auth/dto/SsoLoginCheckDto.java @@ -9,5 +9,6 @@ public class SsoLoginCheckDto { private boolean loginIn; private String id; private Integer userIdx; - private String role; + private String userRole; + private String userType; } diff --git a/src/main/java/com/alist/api/modules/auth/dto/SsoLoginDto.java b/src/main/java/com/alist/api/modules/auth/dto/SsoLoginDto.java index 65776e5..beb02e7 100644 --- a/src/main/java/com/alist/api/modules/auth/dto/SsoLoginDto.java +++ b/src/main/java/com/alist/api/modules/auth/dto/SsoLoginDto.java @@ -15,6 +15,7 @@ public class SsoLoginDto { private Integer userTokenIdx; private String userId; private String userRole; + private String userType; public LoginDto toLoginDto() { LoginDto loginDto = new LoginDto(); diff --git a/src/main/java/com/alist/api/modules/auth/service/AuthService.java b/src/main/java/com/alist/api/modules/auth/service/AuthService.java index d0a1125..1ff1678 100644 --- a/src/main/java/com/alist/api/modules/auth/service/AuthService.java +++ b/src/main/java/com/alist/api/modules/auth/service/AuthService.java @@ -45,6 +45,7 @@ public class AuthService { loginDto.setUserTokenIdx(loginTokenVo.getUserTokenIdx()); loginDto.setUserRole(loginTokenVo.getUserRole()); + loginDto.setUserType(loginTokenVo.getUserType()); Instant now = Instant.now(); Instant expiresAt = now.plusSeconds(jwtProperties.getRefreshTokenValiditySeconds()); diff --git a/src/main/java/com/alist/api/modules/auth/service/SsoService.java b/src/main/java/com/alist/api/modules/auth/service/SsoService.java index 6feb43b..b3a3a4b 100644 --- a/src/main/java/com/alist/api/modules/auth/service/SsoService.java +++ b/src/main/java/com/alist/api/modules/auth/service/SsoService.java @@ -55,6 +55,7 @@ public class SsoService { redisTemplate.opsForHash().put(sessionKey, "userTokenIdx", String.valueOf(loginDto.getUserTokenIdx())); redisTemplate.opsForHash().put(sessionKey, "userId", loginDto.getId()); redisTemplate.opsForHash().put(sessionKey, "userRole", loginDto.getUserRole()); + redisTemplate.opsForHash().put(sessionKey, "userType", loginDto.getUserType()); redisTemplate.expire(sessionKey, ssoSessionTtl); redisTemplate.opsForValue().set(latestSessionKey, ssoSessionId, ssoSessionTtl); @@ -63,6 +64,7 @@ public class SsoService { result.setUserId(loginDto.getId()); result.setUserIdx(loginDto.getUserIdx()); result.setUserRole(loginDto.getUserRole()); + result.setUserType(loginDto.getUserType()); result.setResultCode(200); return result; @@ -90,6 +92,7 @@ public class SsoService { String userId = (String) redisTemplate.opsForHash().get(sessionKey, "userId"); String userTokenIdx = (String) redisTemplate.opsForHash().get(sessionKey, "userTokenIdx"); String userRole = (String) redisTemplate.opsForHash().get(sessionKey, "userRole"); + String userType = (String) redisTemplate.opsForHash().get(sessionKey, "userType"); SsoExchangeDto result = new SsoExchangeDto(); result.setSsoSessionId(ssoSessionId); @@ -97,6 +100,7 @@ public class SsoService { result.setUserIdx(userIdx == null ? null : Integer.parseInt(userIdx)); result.setUserTokenIdx(userTokenIdx == null ? null : Integer.parseInt(userTokenIdx)); result.setUserRole(userRole); + result.setUserType(userType); return result; } @@ -168,6 +172,7 @@ public class SsoService { String userIdx = (String) redisTemplate.opsForHash().get(sessionKey, "userIdx"); String userTokenIdx = (String) redisTemplate.opsForHash().get(sessionKey, "userTokenIdx"); String userRole = (String) redisTemplate.opsForHash().get(sessionKey, "userRole"); + String userType = (String) redisTemplate.opsForHash().get(sessionKey, "userType"); String latestSsoSessionId = redisTemplate.opsForValue().get("alist:sso:userIdx:" + userIdx); if (!ssoSessionId.equals(latestSsoSessionId)) { @@ -182,6 +187,7 @@ public class SsoService { result.setUserIdx(Integer.parseInt(userIdx)); result.setUserTokenIdx(Integer.parseInt(userTokenIdx)); result.setUserRole(userRole); + result.setUserType(userType); result.setSsoSessionId(ssoSessionId); return result; } diff --git a/src/main/java/com/alist/api/modules/auth/vo/LoginTokenVo.java b/src/main/java/com/alist/api/modules/auth/vo/LoginTokenVo.java index dd1d73c..ae6a67b 100644 --- a/src/main/java/com/alist/api/modules/auth/vo/LoginTokenVo.java +++ b/src/main/java/com/alist/api/modules/auth/vo/LoginTokenVo.java @@ -7,5 +7,6 @@ public class LoginTokenVo { private Integer userTokenIdx; private String userApiKey; private String userRole; + private String userType; private String refreshToken; } diff --git a/src/main/java/com/alist/api/modules/user/dto/UserDto.java b/src/main/java/com/alist/api/modules/user/dto/UserDto.java index f56b2b8..5f59f24 100644 --- a/src/main/java/com/alist/api/modules/user/dto/UserDto.java +++ b/src/main/java/com/alist/api/modules/user/dto/UserDto.java @@ -10,6 +10,7 @@ public class UserDto { private Integer userIdx; private String id; private String userRole; + private String userType; @JsonIgnore private String newPassword; diff --git a/src/main/java/com/alist/api/modules/user/dto/UserTokenDto.java b/src/main/java/com/alist/api/modules/user/dto/UserTokenDto.java index ada656d..a10e876 100644 --- a/src/main/java/com/alist/api/modules/user/dto/UserTokenDto.java +++ b/src/main/java/com/alist/api/modules/user/dto/UserTokenDto.java @@ -10,5 +10,6 @@ public class UserTokenDto { private Integer userIdx; private String userApiKey; private String userRole; + private String userType; private int resultCode; } diff --git a/src/main/java/com/alist/api/modules/user/form/UserSignupForm.java b/src/main/java/com/alist/api/modules/user/form/UserSignupForm.java index 6b40368..0e5efad 100644 --- a/src/main/java/com/alist/api/modules/user/form/UserSignupForm.java +++ b/src/main/java/com/alist/api/modules/user/form/UserSignupForm.java @@ -31,22 +31,34 @@ public class UserSignupForm { ) private String password; - @NotBlank(message = "사용자 구분(T:교사, S1: 학생, S2: 수강생)") + @NotBlank(message = "사용자 권한(교사{CCM: 복합 캠퍼스 마스터, SCM:단일 캠퍼스 마스터, I: 교사}, 학생{R:정회원, E:수강생}") @Pattern( - regexp = "^(S1|S2|T)$", - message = "사용자 구분은 S1(학생), S2(수강생), T(교사)만 가능합니다." + regexp = "^(CCM|SCM|I|R|E)$", + message = "사용자 권한(교사{CCM: 복합 캠퍼스 마스터, SCM:단일 캠퍼스 마스터, I: 교사}, 학생{R:정회원, E:수강생})" ) @Schema( - description = "사용자 구분(T:교사, S1: 학생, S2: 수강생)", - example = "T" + description = "사용자 권한(사용자 권한(교사{CCM: 복합 캠퍼스 마스터, SCM:단일 캠퍼스 마스터, I: 교사}, 학생{R:정회원, E:수강생})", + example = "I" ) private String userRole; + @NotBlank(message = "사용자 타입(T:교사, S: 학생)") + @Pattern( + regexp = "^(S|T)$", + message = "사용자 타입 S(학생), T(교사)만 가능합니다." + ) + @Schema( + description = "사용자 타입(T:교사, S: 학생)", + example = "T" + ) + private String userType; + public UserDto toUserDto() { UserDto userDto = new UserDto(); userDto.setId(id.trim()); userDto.setPassword(password); userDto.setUserRole(userRole); + userDto.setUserType(userType); return userDto; } } diff --git a/src/main/java/com/alist/api/modules/user/service/UserService.java b/src/main/java/com/alist/api/modules/user/service/UserService.java index 4e30508..aa068a6 100644 --- a/src/main/java/com/alist/api/modules/user/service/UserService.java +++ b/src/main/java/com/alist/api/modules/user/service/UserService.java @@ -41,6 +41,7 @@ public class UserService { UserVo result = new UserVo(); result.setId(userDto.getId()); result.setUserRole(userDto.getUserRole()); + result.setUserType(userDto.getUserType()); // 중복체크 if (userMapper.selectDuplicateUserCount(userDto) > 0) { @@ -59,6 +60,7 @@ public class UserService { UserTokenDto userTokenDto = new UserTokenDto(); userTokenDto.setUserIdx(userDto.getUserIdx()); userTokenDto.setUserRole(userDto.getUserRole()); + userTokenDto.setUserType(userDto.getUserType()); result.setUserIdx(userDto.getUserIdx()); diff --git a/src/main/java/com/alist/api/modules/user/vo/UserVo.java b/src/main/java/com/alist/api/modules/user/vo/UserVo.java index 543a0c7..b758c58 100644 --- a/src/main/java/com/alist/api/modules/user/vo/UserVo.java +++ b/src/main/java/com/alist/api/modules/user/vo/UserVo.java @@ -10,6 +10,7 @@ public class UserVo { private Integer userIdx; private String id; private String userRole; + private String userType; @JsonIgnore private String newPassword; diff --git a/src/main/resources/mapper/User/UserMapper.xml b/src/main/resources/mapper/User/UserMapper.xml index 00299b1..296f1fd 100644 --- a/src/main/resources/mapper/User/UserMapper.xml +++ b/src/main/resources/mapper/User/UserMapper.xml @@ -9,8 +9,8 @@ /*UserMapper.insertUserTokenSignup*/ - insert into ALISTLMS.test_user_token (user_idx, user_api_key, user_role, created_at, updated_at) - value (#{userIdx}, #{userApiKey}, #{userRole}, now(), now()) + insert into ALISTLMS.test_user_token (user_idx, user_api_key, user_role, user_type, created_at, updated_at) + value (#{userIdx}, #{userApiKey}, #{userRole}, #{userType}, now(), now()) /*AdminLoginMapper.selectAdminLoginById*/ @@ -33,23 +33,27 @@ , ATU.id , ATU.password , ATUT.user_token_idx + , ATUT.user_role + , ATUT.user_type FROM ALISTLMS.test_user ATU INNER JOIN ALISTLMS.test_user_token ATUT ON ATUT.user_idx = ATU.user_idx WHERE ATU.id = #{id} AND ATU.del_yn = 1 - AND ATUT.user_role IN ('A') + AND ATUT.user_type IN ('A') LIMIT 1 diff --git a/src/main/resources/mapper/auth/LoginMapper.xml b/src/main/resources/mapper/auth/LoginMapper.xml index fd53e0e..10d95a0 100644 --- a/src/main/resources/mapper/auth/LoginMapper.xml +++ b/src/main/resources/mapper/auth/LoginMapper.xml @@ -20,7 +20,7 @@ INNER JOIN ALISTLMS.test_user_token ATUT ON ATUT.user_idx = ATU.user_idx WHERE ATU.id = #{id} AND ATU.del_yn = 1 - AND ATUT.user_role IN ('T','S1','S2') + AND ATUT.user_type IN ('T','S') LIMIT 1 @@ -28,6 +28,7 @@ /*LoginMapper.selectUserTokenByUserId*/ select user_token_idx , user_role + , user_type , refresh_token from ALISTLMS.test_user_token where user_idx = #{userIdx} @@ -37,6 +38,7 @@ /*LoginMapper.selectUserTokenByUserApiKey*/ select user_token_idx , user_role + , user_type , refresh_token from ALISTLMS.test_user_token where user_api_key = #{userApiKey} @@ -46,6 +48,7 @@ /*LoginMapper.selectUserTokenByUserTokenIdx*/ select user_token_idx , user_role + , user_type , refresh_token from ALISTLMS.test_user_token where user_token_idx = #{userTokenIdx}