implemented auth repository and service in dart (JWT)

This commit is contained in:
2025-01-03 22:28:25 +00:00
parent 6cf055db22
commit 05fdefc3e2
45 changed files with 868 additions and 46 deletions
@@ -1,5 +1,5 @@
import 'package:backend_dart/domain/entities/project.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
/// Interface for managing project data interactions.
@@ -1,5 +1,5 @@
import 'package:backend_dart/domain/entities/project_task.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
/// Interface for managing task data interactions.
@@ -1,5 +1,5 @@
import 'package:backend_dart/domain/entities/time_entry.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
/// Interface for managing time entry data interactions.
@@ -1,5 +1,5 @@
import 'package:backend_dart/domain/entities/user.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
abstract class UserDataSource {
@@ -1,4 +1,4 @@
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'error_code.dart';
@@ -48,4 +48,8 @@ class AppError with _$AppError implements IError {
factory AppError.inputError({String? message}) {
return AppError.fromErrorCode(ErrorCode.inputError, message: message);
}
factory AppError.authenticationError({String? message}) {
return AppError.fromErrorCode(ErrorCode.authenticationError, message: message);
}
}
@@ -3,6 +3,7 @@ enum ErrorCode {
validationError, // Eingabevalidierungsfehler
unexpectedError, // Unerwarteter Fehler
authenticationError, // Authentifizierungsfehler
authorizationError, // Autorisierungsfehler
permissionDenied, // Berechtigungsfehler
notFound, // Ressource nicht gefunden
exception, // Ausnahme
@@ -1,16 +0,0 @@
import 'package:backend_dart/domain/interface/error.dart';
import 'package:fpdart/fpdart.dart';
abstract class IMapper<U, V> {
/// Konvertiert von Typ U (Origin) zu Typ V (Target)
TaskEither<IError, V> to(U origin);
/// Konvertiert von Typ V (Target) zu Typ U (Origin)
TaskEither<IError, U> from(V target);
/// Konvertiert eine Liste von Typ U (Origin) zu einer Liste von Typ V (Target)
TaskEither<IError, List<V>> listTo(Iterable<U> origins);
/// Konvertiert eine Liste von Typ V (Target) zu einer Liste von Typ U (Origin)
TaskEither<IError, List<U>> listFrom(Iterable<V> targets);
}
@@ -0,0 +1,8 @@
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
abstract class AuthRepository {
TaskEither<IError, String> generateToken(String userId);
TaskEither<IError, String> validateToken(String token);
TaskEither<IError, void> revokeToken(String token);
}
@@ -1,6 +1,6 @@
import 'package:fpdart/fpdart.dart';
import 'package:backend_dart/domain/entities/project.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
abstract class ProjectRepository {
/// Creates a new project.
@@ -1,6 +1,6 @@
import 'package:fpdart/fpdart.dart';
import 'package:backend_dart/domain/entities/project_task.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
abstract class ProjectTaskRepository {
/// Creates a new project task.
@@ -1,6 +1,6 @@
import 'package:fpdart/fpdart.dart';
import 'package:backend_dart/domain/entities/time_entry.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
abstract class TimeEntryRepository {
/// Creates a new time entry.
@@ -1,5 +1,5 @@
import 'package:backend_dart/domain/entities/user.dart';
import 'package:backend_dart/domain/interface/error.dart';
import 'package:backend_dart/domain/errors/error.dart';
import 'package:fpdart/fpdart.dart';
abstract class UserRepository {