Skip to content

Commit

Permalink
Merge pull request #27 from Re-4aliens/develop
Browse files Browse the repository at this point in the history
 2024-01-28 [Release Note]
  • Loading branch information
mjj111 authored Jan 28, 2024
2 parents 6e8c326 + 3e2042a commit 13eafb0
Show file tree
Hide file tree
Showing 58 changed files with 2,232 additions and 30 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/friendship-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ jobs:
distribution: 'temurin'

# 설정 파일 추가
- name: make application-prod.yml
- name: make application-secret.yml
run: |
cd ./src/main/resources
touch ./application-prod.yml
echo "${{ secrets.APPLICATION_PROD }}" > ./application-prod.yml
touch ./application-secret.yml
echo "${{ secrets.APPLICATION_SECRET }}" > ./application-secret.yml
- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Build with Gradle
run: ./gradlew build -x test
run: ./gradlew build

- name: Docker build
run: |
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
src/main/resources/application-secret.yml

### STS ###
.apt_generated
Expand Down
31 changes: 28 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.2.1'
id 'io.spring.dependency-management' version '1.1.4'
id "org.asciidoctor.convert" version "1.5.9.2"

id 'org.asciidoctor.jvm.convert' version "3.3.2"
}

group = 'com.aliens'
version = '0.0.1-SNAPSHOT'

configurations {
asciidoctorExtensions
}

java {
sourceCompatibility = '17'
}
Expand All @@ -20,8 +23,29 @@ repositories {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
asciidoctor 'org.springframework.restdocs:spring-restdocs-asciidoctor'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

//SPRING_REST_DOCS
asciidoctorExtensions 'org.springframework.restdocs:spring-restdocs-asciidoctor'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'

//JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

//VALIDATION
implementation 'org.springframework.boot:spring-boot-starter-validation'

//MYSQL
runtimeOnly 'com.mysql:mysql-connector-j'

//AWS S3
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'
testImplementation 'io.findify:s3mock_2.13:0.2.6'

//SMTP
implementation 'org.springframework.boot:spring-boot-starter-mail'
}

ext {
Expand All @@ -35,6 +59,7 @@ test {
asciidoctor {
inputs.dir snippetsDir
dependsOn test
configurations 'asciidoctorExtensions'
}

bootJar {
Expand Down
Empty file modified gradlew
100644 → 100755
Empty file.
58 changes: 58 additions & 0 deletions src/docs/asciidoc/authentication.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
= Spring REST Docs
:toc: left
:toclevels: 2
:sectlinks:

[[resources-post]]
== Authentication

[[resources-post-create]]
=== 로그인 시도

==== HTTP request

include::{snippets}/auth-login/http-request.adoc[]

==== request-body 설명
include::{snippets}/auth-login/request-fields.adoc[]

==== HTTP response

include::{snippets}/auth-login/http-response.adoc[]

==== response-body 설명
include::{snippets}/auth-login/response-fields.adoc[]



=== 로그아웃

==== HTTP request

include::{snippets}/auth-logout/http-request.adoc[]

==== request-body 설명
include::{snippets}/auth-logout/request-fields.adoc[]

==== HTTP response

include::{snippets}/auth-logout/http-response.adoc[]




=== 토큰재발급

==== HTTP request

include::{snippets}/auth-reissue/http-request.adoc[]

==== request-body 설명
include::{snippets}/auth-reissue/request-fields.adoc[]

==== HTTP response

include::{snippets}/auth-reissue/http-response.adoc[]

==== response-body 설명
include::{snippets}/auth-reissue/response-fields.adoc[]
75 changes: 75 additions & 0 deletions src/docs/asciidoc/email.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
= Spring REST Docs
:toc: left
:toclevels: 2
:sectlinks:

[[resources-post]]
== 이메일 인증

[[resources-post-create]]
=== 이메일 중복 검사 - 사용가능

==== HTTP request

include::{snippets}/email-duplicateCheck-available/http-request.adoc[]

==== request-param 설명
include::{snippets}/email-duplicateCheck-available/query-parameters.adoc[]

==== HTTP response

include::{snippets}/email-duplicateCheck-available/http-response.adoc[]

==== response-body 설명
include::{snippets}/email-duplicateCheck-available/response-fields.adoc[]



=== 이메일 중복 검사 - 사용불가

==== HTTP request

include::{snippets}/email-duplicateCheck-duplicate/http-request.adoc[]

==== request-param 설명
include::{snippets}/email-duplicateCheck-duplicate/query-parameters.adoc[]

==== HTTP response

include::{snippets}/email-duplicateCheck-duplicate/http-response.adoc[]




=== 인증 이메일 전송

==== HTTP request

include::{snippets}/email-verification-send/http-request.adoc[]

==== request-body 설명
include::{snippets}/email-verification-send/request-fields.adoc[]

==== HTTP response

include::{snippets}/email-verification-send/http-response.adoc[]

==== response-body 설명
include::{snippets}/email-verification-send/response-fields.adoc[]


=== 인증 이메일 검증 요청

==== HTTP request

include::{snippets}/email-authentication-success/http-request.adoc[]

==== request-param 설명
include::{snippets}/email-authentication-success/query-parameters.adoc[]

==== HTTP response

include::{snippets}/email-authentication-success/http-response.adoc[]

==== response-body 설명
include::{snippets}/email-authentication-success/response-fields.adoc[]
18 changes: 0 additions & 18 deletions src/docs/asciidoc/index.adoc

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
@RequestMapping("/authentication")
@RestController
public class AuthController {

private final AuthService authService;

public AuthController(final AuthService authService) {
Expand All @@ -22,4 +21,16 @@ public ResponseEntity<AuthToken> login(@RequestBody final LoginRequest loginRequ
AuthToken authToken = authService.login(loginRequest);
return ResponseEntity.ok(authToken);
}

@PostMapping("/logout")
public ResponseEntity<String> logout(@RequestBody final AuthToken authToken) {
String result = authService.logout(authToken);
return ResponseEntity.ok(result);
}

@PostMapping("/reissue")
public ResponseEntity<AuthToken> reissue(@RequestBody final AuthToken authToken) {
AuthToken newAuthToken = authService.reissue(authToken);
return ResponseEntity.ok(newAuthToken);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.aliens.backend.auth.controller.dto;

import com.aliens.backend.auth.domain.MemberRole;

public record LoginMember(Long memberId, MemberRole role) {
}
50 changes: 50 additions & 0 deletions src/main/java/com/aliens/backend/auth/domain/Member.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.aliens.backend.auth.domain;

import com.aliens.backend.auth.controller.dto.LoginMember;
import jakarta.persistence.*;

import java.util.ArrayList;
import java.util.List;


@Entity
public class Member {

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

@Column
private String email;

@Column
private String password;

@Column
private MemberRole role;

@OneToMany(mappedBy = "member", cascade = CascadeType.REMOVE)
private List<Token> tokens = new ArrayList<>();

protected Member() {
}

public Member(final String email, final String password, final MemberRole role) {
this.email = email;
this.password = password;
this.role = role;
}

public boolean isCorrectPassword(String password) {
return this.password.equals(password);
}

public LoginMember getLoginMember() {
return new LoginMember(id,role);
}

@Override
public String toString() {
return String.format("email: %s, password : %s, role : %s", this.email, this.password, this.role);
}
}
27 changes: 27 additions & 0 deletions src/main/java/com/aliens/backend/auth/domain/MemberRole.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.aliens.backend.auth.domain;

public enum MemberRole {
ADMIN(0,"관리자"),
MEMBER(1,"회원");

private final Integer code;
private final String description;

MemberRole(final Integer code, final String description) {
this.code = code;
this.description = description;
}

public static MemberRole of(final Integer code) {
for (MemberRole role : values()) {
if (role.getCode().equals(code)) {
return role;
}
}
return null;
}

public Integer getCode() {
return code;
}
}
Loading

0 comments on commit 13eafb0

Please sign in to comment.