Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

130 changes: 130 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/피로체크.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion backend/pirocheck/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ out/
.vscode/

### 환경 변수 ###
.env
../../.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package backend.pirocheck.User.controller;

import backend.pirocheck.User.dto.request.LoginRequest;
import backend.pirocheck.User.dto.response.LoginResponse;
import backend.pirocheck.User.entity.User;
import backend.pirocheck.User.repository.UserRepository;
import backend.pirocheck.User.service.UserService;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
@RequiredArgsConstructor
public class UserController {

private final UserService userService;

// 로그인
@PostMapping("/login")
public ResponseEntity<LoginResponse> login(@RequestBody LoginRequest request, HttpSession session) {
User user = userService.login(request.getName(), request.getPassword());

//세션에 로그인 정보 저장
session.setAttribute("loginUser", user);

// 사용자 정보 응답
return ResponseEntity.ok(new LoginResponse(user));
}

// 로그아웃
@PostMapping("/logout")
public ResponseEntity<Void> logout(HttpSession session) {
session.invalidate(); // 세션 종료 (메모리에서 삭제)
return ResponseEntity.ok().build(); // 본문은 없음 (void)
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package backend.pirocheck.User.dto.request;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class LoginRequest {

private String name;
private String password;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package backend.pirocheck.User.dto.response;


import backend.pirocheck.User.entity.User;
import lombok.Getter;

@Getter
public class LoginResponse {

private Long id;
private String name;
private String role;

public LoginResponse(User user) {
this.id = user.getId();
this.name = user.getName();
this.role = user.getRole().name(); // MEMBER or ADMIN
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package backend.pirocheck.User.entity;

public enum Role {
ADMIN,
MEMBER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package backend.pirocheck.User.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@Table(name="users")
@NoArgsConstructor
@AllArgsConstructor
@Builder

public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String password; // 전화번호 일부

private String name;

private String email;

private String phone;

@Enumerated(EnumType.STRING)
private Role role; // MEMBER or ADMIN

private Integer generation;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package backend.pirocheck.User.repository;

import backend.pirocheck.User.entity.User;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByName(String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package backend.pirocheck.User.service;

import backend.pirocheck.User.entity.User;
import backend.pirocheck.User.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class UserService {

private final UserRepository userRepository;

public User login(String name, String password) {
return userRepository.findByName(name)
.filter(user -> user.getPassword().equals(password))
.orElseThrow(() -> new IllegalArgumentException("이름 또는 비밀번호가 일치하지 않습니다."));
}
}