complete account service
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -1,4 +1,12 @@
|
|||||||
package dev.mars3142.fhq.account;
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
public interface AccountService {
|
public interface AccountService {
|
||||||
|
|
||||||
|
RegisterResponse register(String username, String email, String password);
|
||||||
|
|
||||||
|
LoginResponse login(String email, String password);
|
||||||
|
|
||||||
|
RefreshTokenResponse refreshToken(String token);
|
||||||
|
|
||||||
|
DeleteResponse delete(String token);
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record DeleteResponse(boolean success) {
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record DeletedCompleted(String localId) {
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record LoginCompleted(String localId, String email, String displayName) {
|
||||||
|
}
|
@@ -0,0 +1,5 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record LoginResponse(String localId, String email, String displayName, String idToken, String registered,
|
||||||
|
String refreshToken, String expiresIn) {
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record RefreshTokenCompleted(String localId, String token) {
|
||||||
|
}
|
@@ -0,0 +1,5 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record RefreshTokenResponse(String expiresIn, String tokenType, String refreshToken, String idToken, String userId,
|
||||||
|
String projectId) {
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record RegisterResponse(String idToken, String email, String refreshToken, String expiresId, String localId) {
|
||||||
|
}
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account;
|
||||||
|
|
||||||
|
public record RegistrationCompleted(String email, String localId) {
|
||||||
|
}
|
@@ -1,17 +1,17 @@
|
|||||||
package dev.mars3142.fhq.account.repositories;
|
package dev.mars3142.fhq.account.repositories;
|
||||||
|
|
||||||
|
import dev.mars3142.fhq.account.repositories.impl.responses.DeleteResponse;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.LoginResponse;
|
import dev.mars3142.fhq.account.repositories.impl.responses.LoginResponse;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.AccountDeleteResponse;
|
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.AccountRegisterResponse;
|
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.RefreshTokenResponse;
|
import dev.mars3142.fhq.account.repositories.impl.responses.RefreshTokenResponse;
|
||||||
|
import dev.mars3142.fhq.account.repositories.impl.responses.RegisterResponse;
|
||||||
|
|
||||||
public interface AccountRepository {
|
public interface AccountRepository {
|
||||||
|
|
||||||
AccountRegisterResponse register(String username, String email, String password);
|
RegisterResponse register(String username, String email, String password);
|
||||||
|
|
||||||
LoginResponse login(String username, String password);
|
LoginResponse login(String username, String password);
|
||||||
|
|
||||||
RefreshTokenResponse refreshToken(String token);
|
RefreshTokenResponse refreshToken(String token);
|
||||||
|
|
||||||
AccountDeleteResponse delete(String token);
|
DeleteResponse delete(String token);
|
||||||
}
|
}
|
||||||
|
@@ -1,14 +1,14 @@
|
|||||||
package dev.mars3142.fhq.account.repositories.impl;
|
package dev.mars3142.fhq.account.repositories.impl;
|
||||||
|
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.AccountRegisterResponse;
|
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.LoginResponse;
|
|
||||||
import dev.mars3142.fhq.account.repositories.AccountRepository;
|
import dev.mars3142.fhq.account.repositories.AccountRepository;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.requests.AccountDeleteRequest;
|
import dev.mars3142.fhq.account.repositories.impl.requests.AccountDeleteRequest;
|
||||||
|
import dev.mars3142.fhq.account.repositories.impl.requests.AccountRegisterRequest;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.requests.LoginRequest;
|
import dev.mars3142.fhq.account.repositories.impl.requests.LoginRequest;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.requests.RefreshTokenRequest;
|
import dev.mars3142.fhq.account.repositories.impl.requests.RefreshTokenRequest;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.AccountDeleteResponse;
|
import dev.mars3142.fhq.account.repositories.impl.responses.DeleteResponse;
|
||||||
|
import dev.mars3142.fhq.account.repositories.impl.responses.LoginResponse;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.responses.RefreshTokenResponse;
|
import dev.mars3142.fhq.account.repositories.impl.responses.RefreshTokenResponse;
|
||||||
import dev.mars3142.fhq.account.repositories.impl.requests.AccountRegisterRequest;
|
import dev.mars3142.fhq.account.repositories.impl.responses.RegisterResponse;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
@@ -23,14 +23,14 @@ public class AccountRepositoryImpl implements AccountRepository {
|
|||||||
private final RestClient client;
|
private final RestClient client;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccountRegisterResponse register(String username, String email, String password) {
|
public RegisterResponse register(String username, String email, String password) {
|
||||||
val request = new AccountRegisterRequest(username, email, password);
|
val request = new AccountRegisterRequest(username, email, password);
|
||||||
return client
|
return client
|
||||||
.post()
|
.post()
|
||||||
.uri("/v1/account/register")
|
.uri("/v1/account/register")
|
||||||
.body(request)
|
.body(request)
|
||||||
.retrieve()
|
.retrieve()
|
||||||
.body(AccountRegisterResponse.class);
|
.body(RegisterResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -49,20 +49,20 @@ public class AccountRepositoryImpl implements AccountRepository {
|
|||||||
val request = new RefreshTokenRequest(token);
|
val request = new RefreshTokenRequest(token);
|
||||||
return client
|
return client
|
||||||
.post()
|
.post()
|
||||||
.uri("/v1/account/refresh")
|
.uri("/v1/token/refresh")
|
||||||
.body(request)
|
.body(request)
|
||||||
.retrieve()
|
.retrieve()
|
||||||
.body(RefreshTokenResponse.class);
|
.body(RefreshTokenResponse.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccountDeleteResponse delete(String token) {
|
public DeleteResponse delete(String token) {
|
||||||
val request = new AccountDeleteRequest(token);
|
val request = new AccountDeleteRequest(token);
|
||||||
return client
|
return client
|
||||||
.post()
|
.post()
|
||||||
.uri("/v1/account/delete")
|
.uri("/v1/account/delete")
|
||||||
.body(request)
|
.body(request)
|
||||||
.retrieve()
|
.retrieve()
|
||||||
.body(AccountDeleteResponse.class);
|
.body(DeleteResponse.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
package dev.mars3142.fhq.account.repositories.impl.responses;
|
|
||||||
|
|
||||||
public record AccountRegisterResponse() {
|
|
||||||
}
|
|
@@ -1,4 +1,4 @@
|
|||||||
package dev.mars3142.fhq.account.repositories.impl.responses;
|
package dev.mars3142.fhq.account.repositories.impl.responses;
|
||||||
|
|
||||||
public record AccountDeleteResponse() {
|
public record DeleteResponse(boolean deleted) {
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
package dev.mars3142.fhq.account.repositories.impl.responses;
|
package dev.mars3142.fhq.account.repositories.impl.responses;
|
||||||
|
|
||||||
public record LoginResponse() {
|
public record LoginResponse(String localId, String email, String displayName, String idToken, String registered,
|
||||||
|
String refreshToken, String expiresIn) {
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
package dev.mars3142.fhq.account.repositories.impl.responses;
|
package dev.mars3142.fhq.account.repositories.impl.responses;
|
||||||
|
|
||||||
public record RefreshTokenResponse() {
|
public record RefreshTokenResponse(String expiresIn, String tokenType, String refreshToken, String idToken, String userId,
|
||||||
|
String projectId) {
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
package dev.mars3142.fhq.account.repositories.impl.responses;
|
||||||
|
|
||||||
|
public record RegisterResponse(String idToken, String email, String refreshToken, String expiresId, String localId) {
|
||||||
|
}
|
@@ -1,14 +0,0 @@
|
|||||||
package dev.mars3142.fhq.account.services;
|
|
||||||
|
|
||||||
import dev.mars3142.fhq.account.repositories.AccountRepository;
|
|
||||||
import dev.mars3142.fhq.account.AccountService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class AccountServiceImpl implements AccountService {
|
|
||||||
|
|
||||||
private final AccountRepository repository;
|
|
||||||
|
|
||||||
}
|
|
@@ -0,0 +1,44 @@
|
|||||||
|
package dev.mars3142.fhq.account.services.impl;
|
||||||
|
|
||||||
|
import dev.mars3142.fhq.account.*;
|
||||||
|
import dev.mars3142.fhq.account.repositories.AccountRepository;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.val;
|
||||||
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class AccountServiceImpl implements AccountService {
|
||||||
|
|
||||||
|
private final ApplicationEventPublisher events;
|
||||||
|
private final AccountRepository repository;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RegisterResponse register(String username, String email, String password) {
|
||||||
|
val response = repository.register(username, email, password);
|
||||||
|
events.publishEvent(new RegistrationCompleted(response.email(), response.localId()));
|
||||||
|
return new RegisterResponse(response.idToken(), response.email(), response.refreshToken(), response.expiresId(), response.localId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LoginResponse login(String email, String password) {
|
||||||
|
val response = repository.login(email, password);
|
||||||
|
events.publishEvent(new LoginCompleted(response.localId(), response.email(), response.displayName()));
|
||||||
|
return new LoginResponse(response.localId(), response.email(), response.displayName(), response.idToken(), response.registered(), response.refreshToken(), response.expiresIn());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RefreshTokenResponse refreshToken(String token) {
|
||||||
|
val response = repository.refreshToken(token);
|
||||||
|
events.publishEvent(new RefreshTokenCompleted(response.userId(), response.idToken()));
|
||||||
|
return new RefreshTokenResponse(response.expiresIn(), response.tokenType(), response.refreshToken(), response.idToken(), response.userId(), response.projectId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DeleteResponse delete(String token) {
|
||||||
|
val response = repository.delete(token);
|
||||||
|
events.publishEvent(new DeletedCompleted(""));
|
||||||
|
return new DeleteResponse(response.deleted());
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user