auth changes
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WatchIt.Shared.Models.Accounts.Authenticate
|
||||
{
|
||||
public class AuthenticateRequest
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[JsonPropertyName("username_or_email")]
|
||||
public string UsernameOrEmail { get; set; }
|
||||
|
||||
[JsonPropertyName("password")]
|
||||
public string Password { get; set; }
|
||||
|
||||
[JsonPropertyName("remember_me")]
|
||||
public bool RememberMe { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WatchIt.Shared.Models.Accounts.Authenticate
|
||||
{
|
||||
public class AuthenticateResponse
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[JsonPropertyName("access_token")]
|
||||
public required string AccessToken { get; init; }
|
||||
|
||||
[JsonPropertyName("refresh_token")]
|
||||
public required string RefreshToken { get; init; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using FluentValidation;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WatchIt.Shared.Models.Accounts.Register
|
||||
{
|
||||
public class RegisterRequest
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[JsonPropertyName("username")]
|
||||
public string Username { get; set; }
|
||||
|
||||
[JsonPropertyName("email")]
|
||||
public string Email { get; set; }
|
||||
|
||||
[JsonPropertyName("password")]
|
||||
public string Password { get; set; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
using WatchIt.Database.Model.Account;
|
||||
|
||||
namespace WatchIt.Shared.Models.Accounts.Register
|
||||
{
|
||||
public class RegisterResponse
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
[JsonPropertyName("id")]
|
||||
public required long Id { get; init; }
|
||||
|
||||
[JsonPropertyName("username")]
|
||||
public required string Username { get; init; }
|
||||
|
||||
[JsonPropertyName("email")]
|
||||
public required string Email { get; init; }
|
||||
|
||||
[JsonPropertyName("creation_date")]
|
||||
public required DateTime CreationDate { get; init; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region CONVERTION
|
||||
|
||||
public static implicit operator RegisterResponse(Account account) => new RegisterResponse
|
||||
{
|
||||
Id = account.Id,
|
||||
Username = account.Username,
|
||||
Email = account.Email,
|
||||
CreationDate = account.CreationDate
|
||||
};
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
107
WatchIt.Shared/WatchIt.Shared.Models/RequestResult.cs
Normal file
107
WatchIt.Shared/WatchIt.Shared.Models/RequestResult.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
namespace WatchIt.Shared.Models
|
||||
{
|
||||
public class RequestResult
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
public RequestResultStatus Status { get; }
|
||||
public IEnumerable<string> ValidationMessages { get; init; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
internal RequestResult(RequestResultStatus status) => Status = status;
|
||||
|
||||
public static RequestResult Ok() => new RequestResult(RequestResultStatus.Ok);
|
||||
public static RequestResult<T> Ok<T>() => new RequestResult<T>(RequestResultStatus.Ok);
|
||||
public static RequestResult<T> Ok<T>(T data) => new RequestResult<T>(RequestResultStatus.Ok) { Data = data };
|
||||
public static RequestResult<T> Created<T>(string location, T resource) => new RequestResult<T>(RequestResultStatus.Created) { NewResourceLocation = location, Data = resource };
|
||||
public static RequestResult NoContent() => new RequestResult(RequestResultStatus.NoContent);
|
||||
public static RequestResult<T> NoContent<T>() => new RequestResult<T>(RequestResultStatus.NoContent);
|
||||
public static RequestResult BadRequest(params string[] validationErrors) => new RequestResult(RequestResultStatus.BadRequest) { ValidationMessages = validationErrors };
|
||||
public static RequestResult<T> BadRequest<T>(params string[] validationErrors) => new RequestResult<T>(RequestResultStatus.BadRequest) { ValidationMessages = validationErrors };
|
||||
public static RequestResult Unauthorized(params string[] validationErrors) => new RequestResult(RequestResultStatus.Unauthorized) { ValidationMessages = validationErrors };
|
||||
public static RequestResult<T> Unauthorized<T>(params string[] validationErrors) => new RequestResult<T>(RequestResultStatus.Unauthorized) { ValidationMessages = validationErrors };
|
||||
public static RequestResult Forbidden() => new RequestResult(RequestResultStatus.Forbidden);
|
||||
public static RequestResult<T> Forbidden<T>() => new RequestResult<T>(RequestResultStatus.Forbidden);
|
||||
public static RequestResult NotFound() => new RequestResult(RequestResultStatus.NotFound);
|
||||
public static RequestResult<T> NotFound<T>() => new RequestResult<T>(RequestResultStatus.NotFound);
|
||||
public static RequestResult Conflict() => new RequestResult(RequestResultStatus.Conflict);
|
||||
public static RequestResult<T> Conflict<T>() => new RequestResult<T>(RequestResultStatus.Conflict);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region CONVERSION
|
||||
|
||||
public static implicit operator ActionResult(RequestResult result) => result.Status switch
|
||||
{
|
||||
RequestResultStatus.Ok => HandleOk(result),
|
||||
RequestResultStatus.NoContent => HandleNoContent(),
|
||||
RequestResultStatus.BadRequest => HandleBadRequest(result),
|
||||
RequestResultStatus.Unauthorized => HandleUnauthorized(result),
|
||||
RequestResultStatus.Forbidden => HandleForbidden(),
|
||||
RequestResultStatus.NotFound => HandleNotFound(),
|
||||
RequestResultStatus.Conflict => HandleConflict(),
|
||||
};
|
||||
|
||||
protected static ActionResult HandleOk(RequestResult result) => new OkResult();
|
||||
protected static ActionResult HandleNoContent() => new NoContentResult();
|
||||
protected static ActionResult HandleBadRequest(RequestResult result) => new BadRequestObjectResult(result.ValidationMessages);
|
||||
protected static ActionResult HandleUnauthorized(RequestResult result) => new UnauthorizedObjectResult(result.ValidationMessages);
|
||||
protected static ActionResult HandleForbidden() => new ForbidResult();
|
||||
protected static ActionResult HandleNotFound() => new NotFoundResult();
|
||||
protected static ActionResult HandleConflict() => new ConflictResult();
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class RequestResult<T> : RequestResult
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
public T? Data { get; init; }
|
||||
public string? NewResourceLocation { get; init; }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
internal RequestResult(RequestResultStatus type) : base(type) { }
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
#region CONVERSION
|
||||
|
||||
public static implicit operator ActionResult(RequestResult<T> result) => result.Status switch
|
||||
{
|
||||
RequestResultStatus.Ok => HandleOk(result),
|
||||
RequestResultStatus.Created => HandleCreated(result),
|
||||
RequestResultStatus.NoContent => HandleNoContent(),
|
||||
RequestResultStatus.BadRequest => HandleBadRequest(result),
|
||||
RequestResultStatus.Unauthorized => HandleUnauthorized(result),
|
||||
RequestResultStatus.Forbidden => HandleForbidden(),
|
||||
RequestResultStatus.NotFound => HandleNotFound(),
|
||||
RequestResultStatus.Conflict => HandleConflict(),
|
||||
};
|
||||
|
||||
private static ActionResult HandleOk(RequestResult<T> result) => result.Data is null ? new OkResult() : new OkObjectResult(result.Data);
|
||||
private static ActionResult HandleCreated(RequestResult<T> result) => new CreatedResult(result.NewResourceLocation, result.Data);
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
20
WatchIt.Shared/WatchIt.Shared.Models/RequestResultStatus.cs
Normal file
20
WatchIt.Shared/WatchIt.Shared.Models/RequestResultStatus.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WatchIt.Shared.Models
|
||||
{
|
||||
public enum RequestResultStatus
|
||||
{
|
||||
Ok = 200,
|
||||
Created = 201,
|
||||
NoContent = 204,
|
||||
BadRequest = 400,
|
||||
Unauthorized = 401,
|
||||
Forbidden = 403,
|
||||
NotFound = 404,
|
||||
Conflict = 409,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentValidation" Version="11.9.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\WatchIt.Database\WatchIt.Database.Model\WatchIt.Database.Model.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user