Skip to content

Commit cbaa62d

Browse files
refactor: remove provider from auth
1 parent febec0a commit cbaa62d

File tree

10 files changed

+8
-59
lines changed

10 files changed

+8
-59
lines changed

docs/database/DDL.sql

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ CREATE TABLE content_flow.users (
1515
CREATE TABLE content_flow.authentications (
1616
id UUID PRIMARY KEY,
1717
user_id UUID NOT NULL REFERENCES content_flow.users(id) ON DELETE CASCADE,
18-
provider VARCHAR(20) NOT NULL CHECK (provider IN ('local', 'google', 'github')),
1918
password_hash VARCHAR(255),
2019
refresh_token TEXT,
2120
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
22-
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
23-
CONSTRAINT unique_user_provider UNIQUE (user_id, provider)
21+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
2422
);
2523

2624
CREATE TABLE content_flow.password_recovery_tokens (

src/application/repositories/user-repository.interface.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import {
2-
Authentication,
3-
AuthProvider,
4-
User,
5-
userRoleEnum,
6-
} from "@/domain/entities";
7-
import { GoogleOAuthAdapterNamespace } from "@/infra";
1+
import { Authentication, User, userRoleEnum } from "@/domain/entities";
82

93
export namespace IUserRepositoryNamespace {
104
export interface CreateUser {
@@ -22,7 +16,6 @@ export namespace IUserRepositoryNamespace {
2216
export interface CreateAuth {
2317
id: string;
2418
userId: string;
25-
provider: AuthProvider;
2619
passwordHash: string;
2720
refreshToken: string;
2821
createdAt: Date;
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { AuthProvider, userRoleEnum } from "@/domain/entities";
1+
import { userRoleEnum } from "@/domain/entities";
22

33
export namespace IRegisterUserNamespace {
44
export interface Input {
55
name: string;
66
email: string;
77
role: userRoleEnum;
88
avatar?: string;
9-
provider: AuthProvider;
109
password: string;
1110
}
1211
}

src/application/usecases/authentication/local/register-user.usecase.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@ import { IQueueFactory, IRepositoryFactory } from "@/application/factories";
22
import { IUseCase } from "../../interfaces/usecase.interface";
33
import { IUserRepository } from "@/application/repositories";
44
import { v7 as uuidv7 } from "uuid";
5-
import {
6-
Authentication,
7-
AuthProvider,
8-
CPF,
9-
Email,
10-
User,
11-
UserRole,
12-
} from "@/domain/entities";
13-
import { IRegisterUserNamespace } from "../interfaces/register-user.usecase.interface";
5+
import { Authentication, CPF, Email, User, UserRole } from "@/domain/entities";
146
import {
157
generatePasswordHash,
168
generateToken,
@@ -19,6 +11,7 @@ import {
1911
import { HttpStatus } from "@/infra/http/protocols.enum";
2012
import { DomainException } from "@/domain/error";
2113
import { IQueue } from "@/infra";
14+
import { IRegisterUserNamespace } from "../interfaces";
2215

2316
export class RegisterUserUseCase implements IUseCase {
2417
private userRepository: IUserRepository;
@@ -61,7 +54,6 @@ export class RegisterUserUseCase implements IUseCase {
6154
const authentication = new Authentication({
6255
id: uuidv7(),
6356
userId: user.getId,
64-
provider: input.provider as AuthProvider,
6557
passwordHash: await generatePasswordHash(input.password),
6658
refreshToken: await generateToken({ user: user, expiresIn: "30d" }),
6759
createdAt: new Date(),

src/domain/entities/authentication.entity.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
export type AuthProvider = "local" | "google";
2-
31
export interface AuthenticationProps {
42
id: string;
53
userId: string;
6-
provider: AuthProvider;
74
passwordHash: string;
85
refreshToken: string;
96
createdAt: Date;
@@ -23,9 +20,6 @@ export class Authentication {
2320
get getUserId() {
2421
return this.props.userId;
2522
}
26-
get getProvider() {
27-
return this.props.provider;
28-
}
2923
set setPasswordHash(password: string) {
3024
this.props.passwordHash = password;
3125
}

src/infra/models/tables.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export interface UserModel {
3131
export interface AuthenticationModel {
3232
id: string;
3333
user_id: string;
34-
provider: string;
3534
password_hash: string;
3635
refresh_token: string;
3736
created_at: Date;

src/infra/repositories/auth-repository.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { IAuthRepository } from "@/application";
22
import { IConnectionDatabase } from "../adapters/database/interfaces/connection-database.interface";
33
import { Models } from "../models/tables";
4-
import { Authentication, AuthProvider } from "@/domain/entities";
4+
import { Authentication } from "@/domain/entities";
55
import { IAuthDAO } from "@/application/dao/auth-dao.interface";
66
import { AuthDAODatabase } from "../dao";
77

@@ -25,7 +25,6 @@ export class AuthRepository implements IAuthRepository {
2525
return {
2626
id: input.getId,
2727
user_id: input.getUserId,
28-
provider: input.getProvider,
2928
password_hash: input.getPasswordHash,
3029
refresh_token: input.getRefreshToken,
3130
created_at: input.createdAt,
@@ -37,7 +36,6 @@ export class AuthRepository implements IAuthRepository {
3736
return new Authentication({
3837
id: input.id,
3938
userId: input.user_id,
40-
provider: input.provider as AuthProvider,
4139
passwordHash: input.password_hash,
4240
refreshToken: input.refresh_token,
4341
createdAt: input.created_at,

src/infra/repositories/user-repository.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export class UserRepository implements IUserRepository {
5454
formattedAuth = {
5555
id: auth.getId,
5656
user_id: auth.getUserId,
57-
provider: auth.getProvider,
5857
password_hash: auth.getPasswordHash,
5958
refresh_token: auth.getRefreshToken,
6059
created_at: auth.createdAt,

src/tests/domain/entities/authentication.entity.test.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
import {
2-
Authentication,
3-
AuthenticationProps,
4-
AuthProvider,
5-
} from "@/domain/entities";
1+
import { Authentication, AuthenticationProps } from "@/domain/entities";
62

73
describe("Authentication Entity", () => {
84
const baseProps: AuthenticationProps = {
95
id: "auth-1",
106
userId: "user-1",
11-
provider: "local",
127
passwordHash: "hashed-password",
138
refreshToken: "refresh-token",
149
createdAt: new Date("2023-01-01T00:00:00Z"),
@@ -19,7 +14,6 @@ describe("Authentication Entity", () => {
1914
const auth = new Authentication(baseProps);
2015
expect(auth.getId).toBe(baseProps.id);
2116
expect(auth.getUserId).toBe(baseProps.userId);
22-
expect(auth.getProvider).toBe(baseProps.provider);
2317
expect(auth.getPasswordHash).toBe(baseProps.passwordHash);
2418
expect(auth.getRefreshToken).toBe(baseProps.refreshToken);
2519
expect(auth.createdAt).toEqual(baseProps.createdAt);
@@ -45,13 +39,4 @@ describe("Authentication Entity", () => {
4539
expect(auth.getPasswordHash).toBe("changed-hash");
4640
expect(auth.getRefreshToken).toBe("changed-refresh");
4741
});
48-
49-
it("should support all AuthProvider values", () => {
50-
const providers: AuthProvider[] = ["local", "google"];
51-
for (const provider of providers) {
52-
const props = { ...baseProps, provider };
53-
const auth = new Authentication(props);
54-
expect(auth.getProvider).toBe(provider);
55-
}
56-
});
5742
});

src/tests/infra/mocks/create-user-mocks.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
1-
import {
2-
AuthProvider,
3-
CPF,
4-
Email,
5-
UserRole,
6-
userRoleEnum,
7-
} from "@/domain/entities";
1+
import { CPF, Email, UserRole, userRoleEnum } from "@/domain/entities";
82

93
export const registerUserMock = {
104
validUser: {
115
name: "Test User",
126
137
password: "securePassword123",
148
role: userRoleEnum.member,
15-
provider: "local" as AuthProvider,
169
},
1710
invalidUser: {
1811
name: "Invalid User",
1912
2013
password: "wrongPassword",
2114
role: 4,
22-
provider: "local" as AuthProvider,
2315
},
2416
};
2517

0 commit comments

Comments
 (0)