Skip to content

Commit

Permalink
Merge pull request #117 from OurMenu/feat/user
Browse files Browse the repository at this point in the history
feat: add get temporary password api
  • Loading branch information
isoo127 authored Aug 19, 2024
2 parents 0b265e9 + 6765c2f commit 39eb477
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.ourMenu.backend.domain.user.api.request.ChangeNicknameRequest;
import com.ourMenu.backend.domain.user.api.request.ChangePasswordRequest;
import com.ourMenu.backend.domain.user.api.request.TempPasswordRequest;
import com.ourMenu.backend.domain.user.api.response.TempPasswordResponse;
import com.ourMenu.backend.domain.user.api.response.UserArticleResponse;
import com.ourMenu.backend.domain.user.api.response.UserInfoResponse;
import com.ourMenu.backend.domain.user.application.UserService;
Expand Down Expand Up @@ -35,6 +37,15 @@ public ApiResponse<Object> changePassword(@UserId Long userId, @Valid @RequestBo
return ApiUtils.success(null);
}

@PostMapping("/password")
public ApiResponse<TempPasswordResponse> getTemporaryPassword(@Valid @RequestBody TempPasswordRequest request, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
throw new ValidationException(getErrorMessages(bindingResult));
}
String tempPwd = userService.getTemporaryPassword(request);
return ApiUtils.success(new TempPasswordResponse(tempPwd));
}

@PatchMapping("/nickname")
public ApiResponse<Object> changeNickname(@UserId Long userId, @Valid @RequestBody ChangeNicknameRequest request, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.ourMenu.backend.domain.user.api.request;

import jakarta.validation.constraints.Email;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
public class TempPasswordRequest {

@Email(message = "이메일 형식이 아닙니다")
private String email;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.ourMenu.backend.domain.user.api.response;

public record TempPasswordResponse(String password) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.ourMenu.backend.domain.user.api.request.ChangeNicknameRequest;
import com.ourMenu.backend.domain.user.api.request.ChangePasswordRequest;
import com.ourMenu.backend.domain.user.api.request.TempPasswordRequest;
import com.ourMenu.backend.domain.user.api.response.UserArticleResponse;
import com.ourMenu.backend.domain.user.api.response.UserInfoResponse;
import com.ourMenu.backend.domain.user.dao.UserDao;
Expand Down Expand Up @@ -61,6 +62,28 @@ public void changePassword(Long userId, ChangePasswordRequest request) {
userDao.updatePassword(userId, encodedNewPassword);
}

public String getTemporaryPassword(TempPasswordRequest request) {
// get user by email
Map<String, Object> user = userDao.getUserByEmail(request.getEmail());
Long userId = (Long) user.get("user_id");

// make random password
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; i++) {
int index = random.nextInt(characters.length());
sb.append(characters.charAt(index));
}
String tempPwd = sb.toString();

// update password
String encodedNewPassword = passwordEncoder.encode(tempPwd);
userDao.updatePassword(userId, encodedNewPassword);

return tempPwd;
}

public void changeNickname(Long userId, ChangeNicknameRequest request) {
userDao.updateNickname(userId, request.getNickname());
}
Expand Down

0 comments on commit 39eb477

Please sign in to comment.