diff --git a/pom.xml b/pom.xml
index ea29406..c44141b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,20 +77,30 @@
org.springframework.boot
spring-boot-starter-web
-
-
-
+
+ org.springframework.boot
+ spring-boot-devtools
+ runtime
+
-
- com.auth0
- java-jwt
- 4.2.1
-
+
+ io.jsonwebtoken
+ jjwt-api
+ 0.11.5
+
+
+ io.jsonwebtoken
+ jjwt-impl
+ 0.11.5
+ runtime
+
+
+ io.jsonwebtoken
+ jjwt-jackson
+ 0.11.5
+ runtime
+
@@ -111,6 +121,12 @@
spring-boot-starter-test
test
+
+ org.projectlombok
+ lombok
+ true
+
+
diff --git a/src/main/java/com/example/backend/BackendApplication.java b/src/main/java/com/example/backend/BackendApplication.java
new file mode 100644
index 0000000..47f72be
--- /dev/null
+++ b/src/main/java/com/example/backend/BackendApplication.java
@@ -0,0 +1,11 @@
+package com.example.backend;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class BackendApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(BackendApplication.class, args);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/config/JwtTokenProvider.java b/src/main/java/com/example/backend/config/JwtTokenProvider.java
new file mode 100644
index 0000000..3534a2f
--- /dev/null
+++ b/src/main/java/com/example/backend/config/JwtTokenProvider.java
@@ -0,0 +1,24 @@
+package com.example.backend.config;
+
+import io.jsonwebtoken.*;
+import org.springframework.stereotype.Component;
+import java.util.*;
+
+@Component
+public class JwtTokenProvider {
+ private final String SECRET_KEY = "secret-key";
+
+ public String createToken(String username, Long userId) {
+ return Jwts.builder()
+ .setSubject(username)
+ .claim("userId", userId)
+ .setIssuedAt(new Date())
+ .setExpiration(new Date(System.currentTimeMillis() + 86400000))
+ .signWith(SignatureAlgorithm.HS256, SECRET_KEY)
+ .compact();
+ }
+
+ public Long getUserIdFromToken(String token) {
+ return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody().get("userId", Long.class);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/config/SecurityConfig.java b/src/main/java/com/example/backend/config/SecurityConfig.java
new file mode 100644
index 0000000..eed67b1
--- /dev/null
+++ b/src/main/java/com/example/backend/config/SecurityConfig.java
@@ -0,0 +1,5 @@
+package com.example.backend.config;
+
+public class SecurityConfig {
+
+}
diff --git a/src/main/java/com/example/backend/controller/AuthController.java b/src/main/java/com/example/backend/controller/AuthController.java
new file mode 100644
index 0000000..d633f65
--- /dev/null
+++ b/src/main/java/com/example/backend/controller/AuthController.java
@@ -0,0 +1,19 @@
+package com.example.backend.controller;
+
+import com.example.backend.dto.LoginRequest;
+import com.example.backend.service.AuthService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/auth")
+public class AuthController {
+
+ @Autowired
+ private AuthService authService;
+
+ @PostMapping("/login")
+ public String login(@RequestBody LoginRequest request) {
+ return authService.login(request.getUsername(), request.getPassword());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/controller/ImageController.java b/src/main/java/com/example/backend/controller/ImageController.java
new file mode 100644
index 0000000..58f4b77
--- /dev/null
+++ b/src/main/java/com/example/backend/controller/ImageController.java
@@ -0,0 +1,5 @@
+package com.example.backend.controller;
+
+public class ImageController {
+
+}
diff --git a/src/main/java/com/example/backend/controller/PermissionController.java b/src/main/java/com/example/backend/controller/PermissionController.java
new file mode 100644
index 0000000..6639760
--- /dev/null
+++ b/src/main/java/com/example/backend/controller/PermissionController.java
@@ -0,0 +1,5 @@
+package com.example.backend.controller;
+
+public class PermissionController {
+
+}
diff --git a/src/main/java/com/example/backend/controller/StateController.java b/src/main/java/com/example/backend/controller/StateController.java
new file mode 100644
index 0000000..56eb309
--- /dev/null
+++ b/src/main/java/com/example/backend/controller/StateController.java
@@ -0,0 +1,5 @@
+package com.example.backend.controller;
+
+public class StateController {
+
+}
diff --git a/src/main/java/com/example/backend/dto/LoginRequest.java b/src/main/java/com/example/backend/dto/LoginRequest.java
new file mode 100644
index 0000000..b50b49b
--- /dev/null
+++ b/src/main/java/com/example/backend/dto/LoginRequest.java
@@ -0,0 +1,11 @@
+package com.example.backend.dto;
+
+import lombok.*;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class LoginRequest {
+ private String username;
+ private String password;
+}
diff --git a/src/main/java/com/example/backend/entity/Image.java b/src/main/java/com/example/backend/entity/Image.java
new file mode 100644
index 0000000..92358ee
--- /dev/null
+++ b/src/main/java/com/example/backend/entity/Image.java
@@ -0,0 +1,5 @@
+package com.example.backend.entity;
+
+public class Image {
+
+}
diff --git a/src/main/java/com/example/backend/entity/Permissions.java b/src/main/java/com/example/backend/entity/Permissions.java
new file mode 100644
index 0000000..481c715
--- /dev/null
+++ b/src/main/java/com/example/backend/entity/Permissions.java
@@ -0,0 +1,5 @@
+package com.example.backend.entity;
+
+public class Permissions {
+
+}
diff --git a/src/main/java/com/example/backend/entity/State.java b/src/main/java/com/example/backend/entity/State.java
new file mode 100644
index 0000000..8748308
--- /dev/null
+++ b/src/main/java/com/example/backend/entity/State.java
@@ -0,0 +1,5 @@
+package com.example.backend.entity;
+
+public class State {
+
+}
diff --git a/src/main/java/com/example/backend/entity/User.java b/src/main/java/com/example/backend/entity/User.java
new file mode 100644
index 0000000..4f6dfd1
--- /dev/null
+++ b/src/main/java/com/example/backend/entity/User.java
@@ -0,0 +1,25 @@
+package com.example.backend.entity;
+
+import java.util.Date;
+
+import jakarta.persistence.*;
+import lombok.*;
+
+@Entity
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ @Column(nullable = false, unique = true)
+ private String username;
+
+ @Column(nullable = false)
+ private String password;
+
+ private Date lastLogin;
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/repository/ImageRepository.java b/src/main/java/com/example/backend/repository/ImageRepository.java
new file mode 100644
index 0000000..9aca41a
--- /dev/null
+++ b/src/main/java/com/example/backend/repository/ImageRepository.java
@@ -0,0 +1,5 @@
+package com.example.backend.repository;
+
+public class ImageRepository {
+
+}
diff --git a/src/main/java/com/example/backend/repository/PermissionRepository.java b/src/main/java/com/example/backend/repository/PermissionRepository.java
new file mode 100644
index 0000000..b84529f
--- /dev/null
+++ b/src/main/java/com/example/backend/repository/PermissionRepository.java
@@ -0,0 +1,5 @@
+package com.example.backend.repository;
+
+public class PermissionRepository {
+
+}
diff --git a/src/main/java/com/example/backend/repository/StateRepository.java b/src/main/java/com/example/backend/repository/StateRepository.java
new file mode 100644
index 0000000..798c899
--- /dev/null
+++ b/src/main/java/com/example/backend/repository/StateRepository.java
@@ -0,0 +1,5 @@
+package com.example.backend.repository;
+
+public class StateRepository {
+
+}
diff --git a/src/main/java/com/example/backend/repository/UserRepository.java b/src/main/java/com/example/backend/repository/UserRepository.java
new file mode 100644
index 0000000..64a620b
--- /dev/null
+++ b/src/main/java/com/example/backend/repository/UserRepository.java
@@ -0,0 +1,9 @@
+package com.example.backend.repository;
+
+import com.example.backend.entity.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import java.util.Optional;
+
+public interface UserRepository extends JpaRepository {
+ Optional findByUsername(String username);
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/service/AuthService.java b/src/main/java/com/example/backend/service/AuthService.java
new file mode 100644
index 0000000..45aa8ea
--- /dev/null
+++ b/src/main/java/com/example/backend/service/AuthService.java
@@ -0,0 +1,25 @@
+package com.example.backend.service;
+
+import com.example.backend.config.JwtTokenProvider;
+import com.example.backend.entity.User;
+import com.example.backend.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AuthService {
+ @Autowired
+ private UserRepository userRepository;
+
+ @Autowired
+ private JwtTokenProvider jwtTokenProvider;
+
+ public String login(String username, String password) {
+ User user = userRepository.findByUsername(username).orElseThrow(() -> new RuntimeException("User not found"));
+ if (!new BCryptPasswordEncoder().matches(password, user.getPassword())) {
+ throw new RuntimeException("Invalid credentials");
+ }
+ return jwtTokenProvider.createToken(user.getUsername(), user.getId());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/backend/service/ImageService.java b/src/main/java/com/example/backend/service/ImageService.java
new file mode 100644
index 0000000..6b4c54e
--- /dev/null
+++ b/src/main/java/com/example/backend/service/ImageService.java
@@ -0,0 +1,5 @@
+package com.example.backend.service;
+
+public class ImageService {
+
+}
diff --git a/src/main/java/com/example/backend/service/PermissionService.java b/src/main/java/com/example/backend/service/PermissionService.java
new file mode 100644
index 0000000..702721c
--- /dev/null
+++ b/src/main/java/com/example/backend/service/PermissionService.java
@@ -0,0 +1,5 @@
+package com.example.backend.service;
+
+public class PermissionService {
+
+}
diff --git a/src/main/java/com/example/backend/service/StateService.java b/src/main/java/com/example/backend/service/StateService.java
new file mode 100644
index 0000000..b93265a
--- /dev/null
+++ b/src/main/java/com/example/backend/service/StateService.java
@@ -0,0 +1,5 @@
+package com.example.backend.service;
+
+public class StateService {
+
+}
diff --git a/src/main/java/com/example/demo/controller/authController.java b/src/main/java/com/example/demo/controller/authController.java
deleted file mode 100644
index 993cfc3..0000000
--- a/src/main/java/com/example/demo/controller/authController.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.example.demo.controller;
-
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-import com.example.demo.service.AuthService;
-
-
-@RestController
-@RequestMapping("/api/auth")
-public class authController {
- private final AuthService authService;
-
- @PostMapping("/login")
- public ResponseEntity login(@RequestBody LoginRequest loginRequest) {
- String token = authService.authenticate(loginRequest.getUsername(), loginRequest.getPassword());
- return ResponseEntity.ok(token);
- }
-}
-
-/* 안녕하세요 IPP 교육생 김대훈입니다.
-1월 8일(수)에 IPP 관련 학교 행사에 참여하게 되어서 해당 날짜에 출근하지 않고 바로 행사장소로 간다고 합니다.
-해당 사안에 관해서 학교와 인사 담당자님과 이야기 됐다고 합니다.
-인사 담당자님께서 담당교사님께 전달하라고 하셔서 이렇게 메시지 보냅니다! 감사합니다. */
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/entity/stateEntity.java b/src/main/java/com/example/demo/entity/stateEntity.java
deleted file mode 100644
index e4be2bf..0000000
--- a/src/main/java/com/example/demo/entity/stateEntity.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.example.demo.entity;
-
-import java.time.LocalDateTime;
-
-import javax.swing.SwingWorker.StateValue;
-
-import jakarta.persistence.*;
-
-@Entity
-@Table(name = "states")
-public class stateEntity {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long stateId;
-
- @ManyToOne
- @JoinColumn(name = "user_id", nullable = false)
- private userEntity user;
-
- @Enumerated(EnumType.STRING)
- @Column(nullable = false)
- private StateValue stateValue;
-
- private Double gpsLatitude;
- private Double gpsLongitude;
- private String address;
-
- @Column(nullable = false)
- private LocalDateTime updatedAt = LocalDateTime.now();
-
- // Getters and Setters
-}
-
-
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/entity/userEntity.java b/src/main/java/com/example/demo/entity/userEntity.java
deleted file mode 100644
index 2462e43..0000000
--- a/src/main/java/com/example/demo/entity/userEntity.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.example.demo.entity;
-
-import java.time.LocalDateTime;
-
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.Table;
-
-
-@Entity
-@Table(name = "users")
-public class userEntity {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long userId;
-
- @Column(nullable = false, unique = true)
- private String username;
-
- @Column(nullable = false)
- private String password;
-
- private LocalDateTime lastLogin;
-
- @Column(nullable = false, updatable = false)
- private LocalDateTime createdAt = LocalDateTime.now();
-
-
-}
diff --git a/src/main/java/com/example/demo/service/AuthService.java b/src/main/java/com/example/demo/service/AuthService.java
deleted file mode 100644
index 9de4e5c..0000000
--- a/src/main/java/com/example/demo/service/AuthService.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.example.demo.service;
-
-public class AuthService {
-
-}