refactor: distribute the domain folder
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
namespace Mirea.Api.Security.Common.Domain.Caching;
|
||||
using Mirea.Api.Security.Common.Model;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.Caching;
|
||||
|
||||
internal class FirstAuthToken
|
||||
{
|
||||
|
@ -1,29 +0,0 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public class CookieOptionsParameters
|
||||
{
|
||||
public required string Domain { get; set; }
|
||||
public required string Path { get; set; }
|
||||
|
||||
internal void SetCookie(HttpContext context, string name, string value, DateTimeOffset? expires = null)
|
||||
{
|
||||
var cookieOptions = new CookieOptions
|
||||
{
|
||||
Expires = expires,
|
||||
Path = Path,
|
||||
Domain = Domain,
|
||||
HttpOnly = true,
|
||||
#if !DEBUG
|
||||
Secure = true
|
||||
#endif
|
||||
};
|
||||
|
||||
context.Response.Cookies.Append(name, value, cookieOptions);
|
||||
}
|
||||
|
||||
internal void DropCookie(HttpContext context, string name) =>
|
||||
SetCookie(context, name, "", DateTimeOffset.MinValue);
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public class LoginOAuthResult
|
||||
{
|
||||
public bool Success { get; set; }
|
||||
public required string Token { get; set; }
|
||||
public Uri? Callback { get; set; }
|
||||
public string? ErrorMessage { get; set; }
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2;
|
||||
|
||||
public class OAuthTokenResponse
|
||||
{
|
||||
[JsonPropertyName("access_token")]
|
||||
public required string AccessToken { get; set; }
|
||||
|
||||
[JsonPropertyName("expires_in")]
|
||||
public int ExpiresIn { get; set; }
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
using Mirea.Api.Security.Common.Interfaces;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2.UserInfo;
|
||||
|
||||
internal class GoogleUserInfo : IUserInfo
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public required string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("email")]
|
||||
public required string Email { get; set; }
|
||||
|
||||
[JsonPropertyName("given_name")]
|
||||
public required string GivenName { get; set; }
|
||||
|
||||
[JsonPropertyName("family_name")]
|
||||
public required string FamilyName { get; set; }
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public required string Name { get; set; }
|
||||
|
||||
[JsonPropertyName("picture")]
|
||||
public required string Picture { get; set; }
|
||||
|
||||
[JsonPropertyName("verified_email")]
|
||||
public bool? VerifiedEmail { get; set; }
|
||||
|
||||
public OAuthUser MapToInternalUser() =>
|
||||
new()
|
||||
{
|
||||
Id = Id,
|
||||
Email = VerifiedEmail.HasValue && VerifiedEmail.Value ? Email : null,
|
||||
FirstName = GivenName,
|
||||
LastName = FamilyName,
|
||||
IconUri = Picture
|
||||
};
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
using Mirea.Api.Security.Common.Interfaces;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2.UserInfo;
|
||||
|
||||
internal class MailRuUserInfo : IUserInfo
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public required string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("email")]
|
||||
public required string Email { get; set; }
|
||||
|
||||
[JsonPropertyName("first_name")]
|
||||
public required string FirstName { get; set; }
|
||||
|
||||
[JsonPropertyName("last_name")]
|
||||
public required string LastName { get; set; }
|
||||
|
||||
[JsonPropertyName("nickname")]
|
||||
public required string Username { get; set; }
|
||||
|
||||
[JsonPropertyName("image")]
|
||||
public string? Image { get; set; }
|
||||
|
||||
public OAuthUser MapToInternalUser() =>
|
||||
new()
|
||||
{
|
||||
Id = Id,
|
||||
Email = Email,
|
||||
FirstName = FirstName,
|
||||
LastName = LastName,
|
||||
Username = Username,
|
||||
IconUri = Image
|
||||
};
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
using Mirea.Api.Security.Common.Interfaces;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2.UserInfo;
|
||||
|
||||
internal class YandexUserInfo : IUserInfo
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public required string Id { get; set; }
|
||||
|
||||
[JsonPropertyName("login")]
|
||||
public required string Login { get; set; }
|
||||
|
||||
[JsonPropertyName("default_email")]
|
||||
public required string DefaultEmail { get; set; }
|
||||
|
||||
[JsonPropertyName("first_name")]
|
||||
public string? FirstName { get; set; }
|
||||
|
||||
[JsonPropertyName("last_name")]
|
||||
public string? LastName { get; set; }
|
||||
|
||||
|
||||
[JsonPropertyName("is_avatar_empty")]
|
||||
public bool IsAvatarEmpty { get; set; }
|
||||
|
||||
[JsonPropertyName("default_avatar_id")]
|
||||
public string? DefaultAvatarId { get; set; }
|
||||
|
||||
public OAuthUser MapToInternalUser() =>
|
||||
new()
|
||||
{
|
||||
Id = Id,
|
||||
Email = DefaultEmail,
|
||||
FirstName = FirstName,
|
||||
LastName = LastName,
|
||||
IconUri =
|
||||
IsAvatarEmpty ? null : $"https://avatars.yandex.net/get-yapic/{DefaultAvatarId}/islands-retina-50",
|
||||
Username = Login
|
||||
};
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2;
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public class OAuthPayload
|
||||
internal class OAuthPayload
|
||||
{
|
||||
public required OAuthProvider Provider { get; set; }
|
||||
public required string Callback { get; set; }
|
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain.OAuth2;
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
internal readonly struct OAuthProviderUrisData
|
||||
{
|
@ -1,15 +0,0 @@
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public class PasswordPolicy(
|
||||
int minimumLength = 8,
|
||||
bool requireLetter = true,
|
||||
bool requireLettersDifferentCase = true,
|
||||
bool requireDigit = true,
|
||||
bool requireSpecialCharacter = true)
|
||||
{
|
||||
public int MinimumLength { get; set; } = minimumLength;
|
||||
public bool RequireLetter { get; set; } = requireLetter;
|
||||
public bool RequireLettersDifferentCase { get; set; } = requireLettersDifferentCase;
|
||||
public bool RequireDigit { get; set; } = requireDigit;
|
||||
public bool RequireSpecialCharacter { get; set; } = requireSpecialCharacter;
|
||||
}
|
@ -7,7 +7,7 @@ namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
internal class RequestContextInfo
|
||||
{
|
||||
public RequestContextInfo(HttpContext context, CookieOptionsParameters cookieOptions)
|
||||
public RequestContextInfo(HttpContext context, Model.CookieOptions cookieOptions)
|
||||
{
|
||||
var ipEntity = context.Connection.RemoteIpAddress;
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public enum TwoFactorAuthenticator
|
||||
{
|
||||
None,
|
||||
Totp
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Mirea.Api.Security.Common.Domain;
|
||||
|
||||
public class User
|
||||
{
|
||||
public required string Id { get; set; }
|
||||
public required string Username { get; set; }
|
||||
public required string Email { get; set; }
|
||||
public required string PasswordHash { get; set; }
|
||||
public required string Salt { get; set; }
|
||||
public required TwoFactorAuthenticator TwoFactorAuthenticator { get; set; }
|
||||
public string? SecondFactorToken { get; set; }
|
||||
public Dictionary<OAuthProvider, OAuthUser>? OAuthProviders { get; set; }
|
||||
}
|
Reference in New Issue
Block a user