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
1 change: 1 addition & 0 deletions account-service/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ out/
.vscode/

**/security/*
**/generated/*
37 changes: 37 additions & 0 deletions account-service/account-service-api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
15 changes: 15 additions & 0 deletions account-service/account-service-api/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
repositories {
mavenCentral()
}

dependencies {

}

tasks.named('test') {
useJUnitPlatform()
}

bootJar {
enabled = false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.synapse.account_service_api.dto;

import java.time.Instant;

public record TokenResult(
String token,
Instant expiresAt
) {

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.dto.request;
package com.synapse.account_service_api.dto.request;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.dto.request;
package com.synapse.account_service_api.dto.request;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.synapse.account_service.dto;
package com.synapse.account_service_api.dto.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.synapse.account_service_api.dto.TokenResult;

public record AccessTokenResponse(
@JsonProperty("accessToken") String token,
Expand All @@ -12,3 +13,4 @@ public static AccessTokenResponse from(TokenResult tokenResult) {
tokenResult.expiresAt().toEpochMilli());
}
}

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.dto;
package com.synapse.account_service_api.dto.response;

import org.springframework.http.ResponseCookie;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.synapse.account_service_api.dto.response;

import java.util.UUID;

public record SignUpResponse(
UUID id,
String email,
String username,
String role
) {

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.synapse.account_service_api.dto.response;

import com.synapse.account_service_api.dto.TokenResult;

public record TokenResponse(
TokenResult accessToken,
TokenResult refreshToken
) {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.synapse.account_service_api.event;

import io.eventuate.tram.events.common.DomainEvent;

public interface MemberDomainEvent extends DomainEvent {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.synapse.account_service_api.event;

import java.util.UUID;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class MemberRegisteredEvent implements MemberDomainEvent {
private UUID userId;
private String email;
private String username;

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

@Override
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(this, o);
}

@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.synapse.account_service_api.event;

import java.util.UUID;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;

import lombok.*;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PUBLIC)
public class SocialAccountLinkedEvent implements MemberDomainEvent{
private UUID userId;
private String providerId;
private String registrationId;

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}

@Override
public boolean equals(Object o) {
return EqualsBuilder.reflectionEquals(this, o);
}

@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
}
39 changes: 39 additions & 0 deletions account-service/account-service/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

**/security/*
25 changes: 25 additions & 0 deletions account-service/account-service/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
repositories {
mavenCentral()
}

dependencies {
implementation project(':account-service-api')
}

def generated = 'src/main/generated'

tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(generated))
}

sourceSets {
main.java.srcDirs += [ generated ]
}

clean {
delete file(generated)
}

tasks.named('test') {
useJUnitPlatform()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.synapse.account_service;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

@EnableJpaAuditing
@ComponentScan
@EnableAutoConfiguration
public class AccountServiceConfig {

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.config;
package com.synapse.account_service.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.config;
package com.synapse.account_service.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -11,4 +11,4 @@ public class PasswordEncoderConfig {
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
package com.synapse.account_service.config;

import static org.springframework.security.config.Customizer.withDefaults;
package com.synapse.account_service.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -10,6 +8,8 @@
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

import static org.springframework.security.config.Customizer.withDefaults;

@Configuration(proxyBeanMethods = false)
@EnableMethodSecurity
public class ResourceServerConfig {
Expand All @@ -25,4 +25,4 @@ public SecurityFilterChain securityResourceServerFilterChain(HttpSecurity http)
.oauth2ResourceServer(oauth2 -> oauth2.jwt(withDefaults()));
return http.build();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.synapse.account_service.config;
package com.synapse.account_service.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -38,6 +38,7 @@ public class SecurityConfig {
private final ObjectMapper objectMapper;
private final PasswordEncoder passwordEncoder;


@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http, JwtAuthenticationFilter jwtAuthenticationFilter) throws Exception {
http.csrf(csrf -> csrf.disable())
Expand All @@ -62,16 +63,17 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http, JwtAuthenticat
.addFilterAt(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)

.exceptionHandling(
exceptionHandlingConfigurer -> exceptionHandlingConfigurer.authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login")));
exceptionHandlingConfigurer -> exceptionHandlingConfigurer.authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/login"))
);

return http.build();
}

@Bean
public DaoAuthenticationProvider authenticationProvider() {
public DaoAuthenticationProvider authenticationProvider(GrantedAuthoritiesMapper grantedAuthoritiesMapper) {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(customUserDetailsService);
authProvider.setPasswordEncoder(passwordEncoder);
authProvider.setAuthoritiesMapper(customAuthorityMapper());
authProvider.setAuthoritiesMapper(grantedAuthoritiesMapper);
return authProvider;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package com.synapse.account_service.controller;

import static org.springframework.http.HttpStatus.CREATED;

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;

import com.synapse.account_service.dto.request.SignUpRequest;
import com.synapse.account_service.dto.response.SignUpResponse;
import com.synapse.account_service.service.AccountService;
import com.synapse.account_service_api.dto.request.SignUpRequest;
import com.synapse.account_service_api.dto.response.SignUpResponse;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

import static org.springframework.http.HttpStatus.CREATED;

@RestController
@RequestMapping("/api/accounts")
@RequiredArgsConstructor
Expand Down
Loading
Loading