Add project files.

This commit is contained in:
Sergio Matias Urquin
2025-04-29 18:57:20 -06:00
parent 62e9799537
commit d5925a6476
44 changed files with 2716 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
// ***********************************************************************
// <copyright file="AccessLevelEnum.cs">
// Heath
// </copyright>
// ***********************************************************************
using System.Text.Json.Serialization;
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Specifies different access level for a permission.
/// </summary>
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum AccessLevelEnum
{
/// <summary>
/// The object is accessible for reading.
/// </summary>
Read = 0,
/// <summary>
/// The object is accessible for writing.
/// </summary>
Write = 1,
/// <summary>
/// The object is accessible for all operations.
/// </summary>
All = 2
}
}

View File

@@ -0,0 +1,43 @@
// ***********************************************************************
// <copyright file="AzureAd.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for Azure Active Directory.
/// </summary>
public class AzureAd
{
/// <summary>
/// The ClientId parameter.
/// </summary>
public const string ClientId = "AzureAdB2C:ClientId";
/// <summary>
/// The TenantId parameter.
/// </summary>
public const string TenantId = "AzureAdB2C:TenantId";
/// <summary>
/// The ClientSecret parameter.
/// </summary>
public const string ClientSecret = "AzureAdB2C:ClientSecret";
/// <summary>
/// The MicrosoftOnlineUri parameter.
/// </summary>
public const string MicrosoftOnlineUri = "https://login.microsoftonline.com/";
/// <summary>
/// The GraphUri parameter.
/// </summary>
public const string GraphUri = "https://graph.microsoft.com/.default";
/// <summary>
/// The Instance parameter.
/// </summary>
public const string Instance = "AzureAdB2C:Instance";
}
}

View File

@@ -0,0 +1,73 @@
// ***********************************************************************
// <copyright file="Claims.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for claims used in JWT tokens.
/// </summary>
public class Claims
{
/// <summary>
/// Claim name for user's name.
/// </summary>
public const string Name = "name";
/// <summary>
/// Claim name for user's guid.
/// </summary>
public const string GUID = "guid";
/// <summary>
/// Claim name for user's ID.
/// </summary>
public const string Id = "id";
/// <summary>
/// Claim name for user's role ID.
/// </summary>
public const string Role = "role";
/// <summary>
/// Claim name for user's role Iidentifier.
/// </summary>
public const string RoleId = "roleId";
/// <summary>
/// Claim name for user's companies.
/// </summary>
public const string Companies = "companies";
/// <summary>
/// Claim name for user's projects.
/// </summary>
public const string Projects = "projects";
/// <summary>
/// Claim name for user's applications.
/// </summary>
public const string Applications = "applications";
/// <summary>
/// Claim name for application's modules.
/// </summary>
public const string Modules = "modules";
/// <summary>
/// Claim name for user's permissions.
/// </summary>
public const string Permissions = "permissions";
/// <summary>
/// Claim name for user's ID.
/// </summary>
public const string Email = "email";
/// <summary>
/// Claim name for user's role.
/// </summary>
public const string LSARoleId = "LSARoleId";
}
}

View File

@@ -0,0 +1,25 @@
namespace Core.Cerberos.Adapters.Common.Constants
{
public static class CollectionNames
{
/// <summary>
/// The User collection name.
/// </summary>
public const string User = "Users";
/// <summary>
/// The Role collection name.
/// </summary>
public const string Role = "Roles";
/// <summary>
/// The Permission collection name.
/// </summary>
public const string Permission = "Permissions";
/// <summary>
/// The Module collection name.
/// </summary>
public const string Module = "Modules";
}
}

View File

@@ -0,0 +1,21 @@
// ***********************************************************************
// <copyright file="EnvironmentVariables.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants of the environment variables for this service.
/// </summary>
public static class EnvironmentVariables
{
/// <summary>
/// The stage environment vriable.
/// </summary>
public const string Stage = "ASPNETCORE_ENVIRONMENT";
}
}

View File

@@ -0,0 +1,33 @@
// ***********************************************************************
// <copyright file="KeyVaultConfiguration.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for Key Vault configuration.
/// </summary>
public class KeyVaultConfiguration
{
/// <summary>
/// The KeyVaultUrl parameter.
/// </summary>
public const string KeyVaultUrl = "KeyVaultConfiguration:KeyVaultUrl";
/// <summary>
/// The TenantId parameter.
/// </summary>
public const string TenantId = "KeyVaultConfiguration:TenantId";
/// <summary>
/// The ClientId parameter.
/// </summary>
public const string ClientId = "KeyVaultConfiguration:ClientId";
/// <summary>
/// The ClientSecretId parameter.
/// </summary>
public const string ClientSecretId = "KeyVaultConfiguration:ClientSecretId";
}
}

View File

@@ -0,0 +1,153 @@
// ***********************************************************************
// <copyright file="MimeTypes.cs">
// Axen IT
// </copyright>
// ***********************************************************************
using System.Globalization;
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for the mime types.
/// </summary>
public static class MimeTypes
{
/// <summary>
/// The application version.
/// </summary>
public const string ApplicationVersion = "1.0";
/// <summary>
/// The service application/json mime type.
/// </summary>
public const string ApplicationJson = "application/json";
/// <summary>
/// The application/pdf mime type.
/// </summary>
public const string ApplicationPdf = "application/pdf";
/// <summary>
/// The end index.
/// </summary>
public const int EndIndex = 5;
/// <summary>
/// The JPEG extension.
/// </summary>
public const string ExtensionGif = "gif";
/// <summary>
/// The JPEG extension.
/// </summary>
public const string ExtensionJpeg = "jpeg";
/// <summary>
/// The PNG extension.
/// </summary>
public const string ExtensionPng = "png";
/// <summary>
/// The SVG extension.
/// </summary>
public const string ExtensionSvg = "svg";
/// <summary>
/// The image/gif mime type.
/// </summary>
public const string ImageGif = "image/gif";
/// <summary>
/// The image/jpeg mime type.
/// </summary>
public const string ImageJpeg = "image/jpeg";
/// <summary>
/// The image/png mime type.
/// </summary>
public const string ImagePng = "image/png";
/// <summary>
/// The image/svg+xml mime type.
/// </summary>
public const string ImageSvg = "image/svg+xml";
/// <summary>
/// The identifier GIF.
/// </summary>
public const string IdentifierGif = "R0LGO";
/// <summary>
/// The identifier PNG.
/// </summary>
public const string IdentifierJpeg = "/9J/4";
/// <summary>
/// The identifier PDF.
/// </summary>
public const string IdentifierPdf = "JVBER";
/// <summary>
/// The identifier PNG.
/// </summary>
public const string IdentifierPng = "IVBOR";
/// <summary>
/// The identifier SVG.
/// </summary>
public const string IdentifierSvg = "PHN2Z";
/// <summary>
/// The parameter name.
/// </summary>
public const string ParameterName = "MimeType";
/// <summary>
/// The start index.
/// </summary>
public const int StartIndex = 0;
/// <summary>
/// The mime type dictionary.
/// </summary>
public static readonly Dictionary<string, string> Dictionary = new Dictionary<string, string>
{
{ IdentifierJpeg, ImageJpeg },
{ IdentifierPng, ImagePng },
{ IdentifierGif, ImageGif },
{ IdentifierSvg, ImageSvg },
};
/// <summary>
/// The mime type dictionary.
/// </summary>
public static readonly Dictionary<string, string> DictionaryExtension = new Dictionary<string, string>
{
{ IdentifierJpeg, ExtensionJpeg },
{ IdentifierPng, ExtensionPng },
{ IdentifierGif, ExtensionGif },
{ IdentifierSvg, ExtensionSvg },
};
/// <summary>
/// Gets the mime type.
/// </summary>
/// <param name="content">The content with mime type identifier, substring 0, 5 from content.</param>
/// <returns>A <see cref="string"/> representing the value.</returns>
public static string GetMimeType(this string content)
{
return Dictionary.FirstOrDefault(_ => _.Key == content[..EndIndex].ToUpper(CultureInfo.InvariantCulture)).Value;
}
/// <summary>
/// Gets the extension.
/// </summary>
/// <param name="content">The mime type identifier, substring 0, 5 from content.</param>
/// <returns>A <see cref="string"/> representing the value.</returns>
public static string GetExtension(this string content)
{
return DictionaryExtension.FirstOrDefault(_ => _.Key == content[..EndIndex].ToUpper(CultureInfo.InvariantCulture)).Value;
}
}
}

View File

@@ -0,0 +1,114 @@
// ***********************************************************************
// <copyright file="Routes.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants of the routes of this service.
/// </summary>
public static class Routes
{
/// <summary>
/// The User route.
/// </summary>
public const string User = "users";
/// <summary>
/// The Register User route.
/// </summary>
public const string Register = "{sendInvitation}/send-invitation/register";
/// <summary>
/// The identifier route.
/// </summary>
public const string Id = "{id}";
/// <summary>
/// The Authentication route.
/// </summary>
public const string Authentication = "api/v1/authentication";
/// <summary>
/// The LogIn route.
/// </summary>
public const string LogIn = "{email}/login";
/// <summary>
/// The LogOut route.
/// </summary>
public const string LogOut = "{email}/logout";
/// <summary>
/// The Generate Token route.
/// </summary>
public const string GenerateToken = "GenerateToken";
/// <summary>
/// The refresh token route.
/// </summary>
public const string RefreshToken = "RefreshToken";
/// <summary>
/// The InviteUser route.
/// </summary>
public const string InviteUser = "invite-user";
/// <summary>
/// The role identifier route.
/// </summary>
public const string RoleId = "role/{roleId}";
/// <summary>
/// The GetPermissionList route.
/// </summary>
public const string GetPermissionList = "GetPermissionList";
/// <summary>
/// The GetModuleList route.
/// </summary>
public const string GetModuleList = "GetModuleList";
/// <summary>
/// The ChangeStatus route.
/// </summary>
public const string ChangeStatus = "{id}/{newStatus}/ChangeStatus";
/// <summary>
/// The AddCompany route.
/// </summary>
public const string AddCompany = "{userId}/Companies/{companyId}/Add";
/// <summary>
/// The RemoveCompany route.
/// </summary>
public const string RemoveCompany = "{userId}/Companies/{companyId}/Remove";
/// <summary>
/// The AddProject route.
/// </summary>
public const string AddProject = "{userId}/Projects/{projectId}/Add";
/// <summary>
/// The RemoveProject route.
/// </summary>
public const string RemoveProject = "{userId}/Projects/{projectId}/Remove";
/// <summary>
/// The AddApplication route.
/// </summary>
public const string AddApplication = "{roleId}/{application}/AddApplication";
/// <summary>
/// The RemoveApplication route.
/// </summary>
public const string RemoveApplication = "{roleId}/{application}/RemoveApplication";
/// <summary>
/// The email route.
/// </summary>
public const string Email = "{email}/GetByEmail";
}
}

View File

@@ -0,0 +1,18 @@
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for schemes.
/// </summary>
public class Schemes
{
/// <summary>
/// The heath scheme.
/// </summary>
public const string HeathScheme = "HeathScheme";
/// <summary>
/// The azure scheme.
/// </summary>
public const string AzureScheme = "AzureScheme";
}
}

View File

@@ -0,0 +1,59 @@
// ***********************************************************************
// <copyright file="AppSettings.cs">
// Heath
// </copyright>
// ***********************************************************************
namespace Core.Cerberos.Adapters.Common.Constants
{
/// <summary>
/// Constants for secrets in azure key vault.
/// </summary>
public class Secrets
{
/// <summary>
/// The MongoDBName parameter.
/// </summary>
public const string MongoDBName = "MongoDBName";
/// <summary>
/// The MongoDBConnection parameter.
/// </summary>
public const string MongoDBConnection = "MongoDBConnection";
/// <summary>
/// The Issuer parameter for JWT settings.
/// </summary>
public const string Issuer = "Issuer";
/// <summary>
/// The Audience parameter for JWT settings.
/// </summary>
public const string Audience = "Audience";
/// <summary>
/// The TokenExpirationInMinutes parameter for JWT settings.
/// </summary>
public const string TokenExpirationInMinutes = "TokenExpirationInMinutes";
/// <summary>
/// The TokenExpirationInHours parameter for JWT settings.
/// </summary>
public const string TokenExpirationInHours = "TokenExpirationInHours";
/// <summary>
/// The IssuerSigningKey parameter for JWT settings.
/// </summary>
public const string IssuerSigningKey = "IssuerSigningKey";
public const string AzureADInstance = "B2C:InstanceUri";
public const string AzureADTenantId = "B2C:TenantId";
public const string AzureADClientId = "B2C:ClientId";
public const string AzureADClientSecret = "B2C:ClientSecret";
public const string HeathCerberosAppAuthorizationUrl = "Swagger:AuthorizationUri";
public const string HeathCerberosAppTokenUrl = "Swagger:TokenUri";
public const string HeathCerberosAppClientId = "Swagger:ClientId";
public const string HeathCerberosAppScope = "Swagger:Scope";
public const string PrivateKey = "B2C:JwtIssuerOptions:TokenPrivateKey";
public const string PublicKey = "B2C:JwtIssuerOptions:TokenPublicKey";
}
}