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
29 changes: 11 additions & 18 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,6 @@ configurations {

repositories {
mavenCentral()
maven {
name = 'chuseok22NexusRelease'
url = uri('https://nexus.chuseok22.com/repository/maven-releases/')
metadataSources {
mavenPom()
artifact()
}
}
}

dependencies {
Expand All @@ -40,9 +32,16 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j:8.0.33'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
implementation 'io.jsonwebtoken:jjwt-impl:0.12.3'
implementation 'io.jsonwebtoken:jjwt-jackson:0.12.3'

//Http
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'org.jsoup:jsoup:1.15.3'

//JavaNetCookieJar
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.9.3'
//HttpLogginInterceptor
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'

annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
Expand All @@ -57,16 +56,10 @@ dependencies {

implementation 'org.springframework.cloud:spring-cloud-starter-aws-messaging:2.2.6.RELEASE'

implementation 'com.squareup.okhttp3:okhttp:4.11.0'
implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.11.0' // 추가
// Jsoup (HTML 파싱)
implementation 'org.jsoup:jsoup:1.18.1'

developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'com.chuseok22:sejong-portal-login:1.0.0'

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"

implementation 'org.apache.poi:poi-ooxml:5.2.3'
Expand Down
20 changes: 7 additions & 13 deletions src/main/java/com/example/enjoy/controller/LoginController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import com.example.enjoy.dto.loginDto.MemberCommand;
import com.example.enjoy.dto.loginDto.MemberDto;
import com.example.enjoy.service.loginService.SejongLoginService;
import com.example.enjoy.dto.loginDto.SejongMemberInfo;
import com.example.enjoy.service.loginService.SejongPortalLoginService;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
Expand All @@ -19,23 +20,16 @@
@AllArgsConstructor
@RequestMapping("/api/auth/sejong")
public class LoginController {
private final SejongLoginService sejongLoginService;
private final SejongPortalLoginService sejongLoginService;

/**
* 세종대학교 포털 로그인 및 사용자 정보 조회
* 포털 로그인 -> 고전독서 사이트 SSO 인증 -> 사용자 정보 파싱 및 반환
*/
@PostMapping("/login")
public ResponseEntity<MemberDto> loginAndGetUserInfo(@RequestBody @Valid MemberCommand command) {
try {
log.info("세종대 포털 로그인 요청: {}", command.getSejongPortalId());
MemberDto memberInfo = sejongLoginService.login(command);
log.info("사용자 정보 조회 성공: {}", memberInfo.getStudentName());
return ResponseEntity.ok(memberInfo);
} catch (Exception e) {
log.error("세종대 포털 로그인 및 정보 조회 실패: {}", e.getMessage(), e);
throw new RuntimeException("세종대 포털 인증 실패", e);
}
@PostMapping
public ResponseEntity<SejongMemberInfo> login(@RequestBody MemberCommand command) {
log.info("세종대 포털 로그인 시도: {}", command.getSejongPortalId());
return ResponseEntity.ok(sejongLoginService.getMemberAuthInfos(command));
}

}
12 changes: 7 additions & 5 deletions src/main/java/com/example/enjoy/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import com.example.enjoy.dto.StudentCourseStatus;
import com.example.enjoy.dto.loginDto.MemberCommand;
import com.example.enjoy.dto.loginDto.MemberDto;
import com.example.enjoy.dto.loginDto.SejongMemberInfo;
import com.example.enjoy.entity.StudentCourse;
import com.example.enjoy.entity.Track;
import com.example.enjoy.service.loginService.SejongLoginService;
import com.example.enjoy.service.loginService.SejongPortalLoginService;
import com.example.enjoy.service.userService.UserService;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.Valid;
Expand All @@ -23,19 +24,20 @@
@RequestMapping("/api/student")
public class UserController {

private final SejongLoginService sejongLoginService;
private final SejongPortalLoginService sejongLoginService;
private final UserService userService;

public UserController(SejongLoginService sejongLoginService, UserService userService) {
public UserController(SejongPortalLoginService sejongLoginService, UserService userService) {
this.sejongLoginService = sejongLoginService;
this.userService = userService;
}

@Operation(summary = "학생 정보 조회", description = "세종대학교 포털 인증을 통해 학생 정보를 조회합니다.")
@PostMapping("/detail")
public ResponseEntity<MemberDto> getStudentDetail(@RequestBody MemberCommand command) throws IOException {
MemberDto memberInfo = sejongLoginService.getMemberAuthInfos(command);
return ResponseEntity.ok(memberInfo);
SejongMemberInfo memberInfo = sejongLoginService.getMemberAuthInfos(command);
MemberDto dto = MemberDto.fromSejongMemberInfo(memberInfo);
return ResponseEntity.ok(dto);
}

@Operation(summary = "수동 과목 등록", description = "학생이 직접 수강한 과목을 등록합니다.")
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/example/enjoy/dto/loginDto/MemberDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,15 @@ public class MemberDto {
private String grade;
private String completedSemester;
private boolean hasLoginHistory; // 로그인 이력 여부

public static MemberDto fromSejongMemberInfo(SejongMemberInfo sejongMemberInfo){
return new MemberDto(
sejongMemberInfo.getMajor()
, sejongMemberInfo.getStudentId()
, sejongMemberInfo.getName()
, sejongMemberInfo.getGrade()
, sejongMemberInfo.getCompletedSemester()
, false // 기본값으로 false 설정
);
}
}
17 changes: 17 additions & 0 deletions src/main/java/com/example/enjoy/dto/loginDto/SejongMemberInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.example.enjoy.dto.loginDto;

import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

@Builder
@Getter
@ToString
public class SejongMemberInfo {
private String major;
private String name;
private String studentId;
private String grade;
private String status;
private String completedSemester;
}

This file was deleted.

Loading
Loading