diff --git a/.gitignore b/.gitignore
index 4ce6fdd..42155da 100644
--- a/.gitignore
+++ b/.gitignore
@@ -337,4 +337,8 @@ ASALocalRun/
.localhistory/
# BeatPulse healthcheck temp database
-healthchecksdb
\ No newline at end of file
+healthchecksdb
+
+*/**/appsettings.Development.json
+build.sh
+buildx.sh
\ No newline at end of file
diff --git a/Directory.Build.props b/Directory.Build.props
index eacdac7..3e9b9c6 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,10 +1,10 @@
- 1.1.3
+ 2.0.0
Tudor Stanciu
STA
- IdentityServer
- STA Identity server
+ Tuitio
+ STA Tuitio
\ No newline at end of file
diff --git a/Documentation.md b/Documentation.md
deleted file mode 100644
index 37a40d7..0000000
--- a/Documentation.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Identity Server
-
-## How To Use 🔧
-
-## Roadmap 🚧
-
-## IdentityServer.Api
-
-⚡️ Nu mai returna si status code din metoda de autentificare
-⚡️ Store passwords as hash\
-⚡️ Documentatie in fisier .md afisata in frontend - e diferite de release notes\
-
-
-## IdentityServer.Frontend
-
-⚡️ Se vor putea adauga/edita/sterge/inactiva useri\
-⚡️ Se vor putea vedea login-urile unui user; se va putea invalida un token activ\
-⚡️ Se va putea decoda un token - public, fara auth\
\ No newline at end of file
diff --git a/IdentityServer.Api/Dockerfile b/IdentityServer.Api/Dockerfile
deleted file mode 100644
index ce69f26..0000000
--- a/IdentityServer.Api/Dockerfile
+++ /dev/null
@@ -1,37 +0,0 @@
-#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
-
-FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
-WORKDIR /app
-EXPOSE 80
-
-FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
-WORKDIR /src
-COPY dependencies.props .
-COPY Directory.Build.props .
-COPY NuGet.config .
-COPY ["IdentityServer.Api/IdentityServer.Api.csproj", "IdentityServer.Api/"]
-COPY ["IdentityServer.Application/IdentityServer.Application.csproj", "IdentityServer.Application/"]
-COPY ["IdentityServer.Domain/IdentityServer.Domain.csproj", "IdentityServer.Domain/"]
-COPY ["IdentityServer.PublishedLanguage/IdentityServer.PublishedLanguage.csproj", "IdentityServer.PublishedLanguage/"]
-COPY ["IdentityServer.Domain.Data/IdentityServer.Domain.Data.csproj", "IdentityServer.Domain.Data/"]
-RUN dotnet restore "IdentityServer.Api/IdentityServer.Api.csproj"
-COPY . .
-WORKDIR "/src/IdentityServer.Api"
-RUN dotnet build "IdentityServer.Api.csproj" -c Release -o /app/build
-
-FROM build AS publish
-RUN dotnet publish "IdentityServer.Api.csproj" -c Release -o /app/publish
-
-FROM base AS final
-WORKDIR /app
-COPY --from=publish /app/publish .
-
-ENV urls="http://*:80"
-ENV ConnectionStrings__DatabaseConnection="*********************************"
-ENV TZ=Europe/Bucharest
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
-
-#Workaround to lower the TLS level in container for old sql server version
-RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
-
-ENTRYPOINT ["dotnet", "IdentityServer.Api.dll", "--console"]
\ No newline at end of file
diff --git a/IdentityServer.Api/Program.cs b/IdentityServer.Api/Program.cs
deleted file mode 100644
index 4460c50..0000000
--- a/IdentityServer.Api/Program.cs
+++ /dev/null
@@ -1,93 +0,0 @@
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.Hosting;
-using Serilog;
-using Serilog.Core;
-using Serilog.Events;
-using Serilog.Sinks.MSSqlServer;
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-
-namespace IdentityServer.Api
-{
- public class Program
- {
- public static void Main(string[] args)
- {
- var isConsole = args.Contains("--console");
- if (!isConsole)
- {
- var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
- var pathToContentRoot = Path.GetDirectoryName(pathToExe);
- Directory.SetCurrentDirectory(pathToContentRoot);
- }
-
- var configuration = new ConfigurationBuilder()
- .SetBasePath(Directory.GetCurrentDirectory())
- .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
- .AddEnvironmentVariables()
- .Build();
-
- var connectionString = configuration.GetConnectionString("DatabaseConnection");
- var loggingLevelParam = configuration.GetValue("Logging:LogLevel:Default");
-
- var loggingLevelOk = Enum.TryParse(loggingLevelParam, out LogEventLevel loggingLevel);
- if (!loggingLevelOk)
- throw new Exception($"Logging level '{loggingLevelParam}' is not valid.");
-
- var loggingLevelSwitch = new LoggingLevelSwitch(loggingLevel);
-
- var columnOptions = new ColumnOptions();
- columnOptions.Store.Remove(StandardColumn.Properties);
- columnOptions.Store.Remove(StandardColumn.MessageTemplate);
- columnOptions.Store.Add(StandardColumn.LogEvent);
-
- var mssqlSinkOptions = new MSSqlServerSinkOptions() { AutoCreateSqlTable = true, TableName = "__Logs" };
-
- Log.Logger = new LoggerConfiguration()
- .MinimumLevel.ControlledBy(loggingLevelSwitch)
- .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
- .Enrich.FromLogContext()
- .WriteTo.Console()
- .WriteTo.MSSqlServer(connectionString, mssqlSinkOptions, columnOptions: columnOptions)
- .CreateLogger();
-
- //Serilog.Debugging.SelfLog.Enable(msg => Console.WriteLine(msg));
-
- try
- {
- var urls = configuration.GetValue("urls");
- Log.Information("Starting identity server API...");
- Log.Information($"API listening on {urls}");
- Console.WriteLine("Application started. Press Ctrl+C to shut down.");
- CreateHostBuilder(args, configuration, !isConsole).Build().Run();
- }
- catch (Exception ex)
- {
- Log.Fatal(ex, "Identity server API host terminated unexpectedly");
- }
- finally
- {
- Log.CloseAndFlush();
- }
- }
-
- public static IHostBuilder CreateHostBuilder(string[] args, IConfiguration configuration, bool useWindowsService)
- {
- var builder = Host.CreateDefaultBuilder(args)
- .ConfigureWebHostDefaults(webBuilder =>
- {
- webBuilder.UseStartup()
- .UseConfiguration(configuration)
- .UseSerilog();
- });
-
- if (useWindowsService)
- builder.UseWindowsService();
-
- return builder;
- }
- }
-}
diff --git a/IdentityServer.Api/Startup.cs b/IdentityServer.Api/Startup.cs
deleted file mode 100644
index 790c024..0000000
--- a/IdentityServer.Api/Startup.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using IdentityServer.Application;
-using IdentityServer.Application.Services.Abstractions;
-using IdentityServer.Domain.Data;
-using MediatR;
-using MediatR.Pipeline;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Hosting;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-using NDB.Extensions.Swagger;
-using NDB.Extensions.Swagger.Constants;
-using NDB.Infrastructure.DatabaseMigration;
-using NDB.Infrastructure.DatabaseMigration.Constants;
-using Newtonsoft.Json;
-using System.Reflection;
-
-namespace IdentityServer.Api
-{
- public class Startup
- {
- private readonly IConfiguration _configuration;
-
- public Startup(IConfiguration configuration)
- {
- _configuration = configuration;
- }
-
- // This method gets called by the runtime. Use this method to add services to the container.
- public void ConfigureServices(IServiceCollection services)
- {
- services.AddControllers()
- .AddNewtonsoftJson(o => o.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc);
-
- // MediatR
- services.AddMediatR(GetMediatRAssemblies());
- services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPreProcessorBehavior<,>));
- services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>));
-
- // AutoMapper
- services.AddAutoMapper(
- typeof(Application.Mappings.MappingProfile).Assembly);
-
- // Swagger
- services.AddSwagger("Identity Server API", AuthorizationType.None);
-
- // Data access
- services.AddMigration(DatabaseType.SQLServer, MetadataLocation.Database);
- services.AddDataAccess();
-
- // Application
- services.AddApplicationServices();
- }
-
- private Assembly[] GetMediatRAssemblies()
- {
- var assembly = typeof(Application.Commands.AuthenticateUser).Assembly;
- return new Assembly[] { assembly };
- }
-
- // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
- {
- // global cors policy
- app.UseCors(x => x
- .AllowAnyOrigin()
- .AllowAnyMethod()
- .AllowAnyHeader());
-
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- }
-
- app.UseRouting();
- app.UseAuthorization();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllers();
- });
- app.ConfigureSwagger("IdentityServer API");
-
- app.UseMigration();
-
- var behaviorService = app.ApplicationServices.GetService();
- behaviorService.FillTokenStore();
- }
- }
-}
diff --git a/IdentityServer.Api/appsettings.Development.json b/IdentityServer.Api/appsettings.Development.json
deleted file mode 100644
index 8983e0f..0000000
--- a/IdentityServer.Api/appsettings.Development.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft": "Warning",
- "Microsoft.Hosting.Lifetime": "Information"
- }
- }
-}
diff --git a/IdentityServer.Api/appsettings.json b/IdentityServer.Api/appsettings.json
deleted file mode 100644
index f3b6759..0000000
--- a/IdentityServer.Api/appsettings.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "urls": "http://*:5063",
- "ConnectionStrings": {
- "DatabaseConnection": "Server=######;Database=######;User Id=######;Password=######;MultipleActiveResultSets=true"
- },
- "Logging": {
- "LogLevel": {
- "Default": "Debug",
- "Microsoft": "Warning",
- "Microsoft.Hosting.Lifetime": "Information"
- }
- },
- "AllowedHosts": "*",
- "Restrictions": {
- "MaxFailedLoginAttempts": 5
- },
- "Token": {
- "ValidityInMinutes": 43800
- }
-}
diff --git a/IdentityServer.Application/Commands/AuthenticateUser.cs b/IdentityServer.Application/Commands/AuthenticateUser.cs
deleted file mode 100644
index f433c98..0000000
--- a/IdentityServer.Application/Commands/AuthenticateUser.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using IdentityServer.PublishedLanguage.Events;
-using NDB.Application.DataContracts;
-
-namespace IdentityServer.Application.Commands
-{
- public class AuthenticateUser : Command
- {
- public string UserName { get; set; }
- public string Password { get; set; }
- }
-}
diff --git a/IdentityServer.Application/Commands/AuthorizeToken.cs b/IdentityServer.Application/Commands/AuthorizeToken.cs
deleted file mode 100644
index 03dae3e..0000000
--- a/IdentityServer.Application/Commands/AuthorizeToken.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using IdentityServer.PublishedLanguage.Dto;
-using NDB.Application.DataContracts;
-
-namespace IdentityServer.Application.Commands
-{
- public class AuthorizeToken : Command
- {
- public string Token { get; set; }
- }
-}
diff --git a/IdentityServer.PublishedLanguage/IdentityServer.PublishedLanguage.csproj b/IdentityServer.PublishedLanguage/IdentityServer.PublishedLanguage.csproj
deleted file mode 100644
index 9dadd87..0000000
--- a/IdentityServer.PublishedLanguage/IdentityServer.PublishedLanguage.csproj
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
- netstandard2.0
- Identity server published language package
- https://dev.azure.com/tstanciu94/IdentityServer
- https://dev.azure.com/tstanciu94/_git/IdentityServer
- Git
- Identity server published language package
- 1.1.0
-
-
-
diff --git a/IdentityServer.Wrapper/IdentityServer.Wrapper.csproj b/IdentityServer.Wrapper/IdentityServer.Wrapper.csproj
deleted file mode 100644
index ab7c6f1..0000000
--- a/IdentityServer.Wrapper/IdentityServer.Wrapper.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- netstandard2.0
- Identity server wrapper
- Identity server wrapper
- https://dev.azure.com/tstanciu94/IdentityServer
- Git
- https://dev.azure.com/tstanciu94/_git/IdentityServer
- IdentityServer wrapper
- 1.1.0
-
-
-
-
-
-
-
-
-
-
diff --git a/Notes.txt b/Notes.txt
index 9d1562e..0fe4dc4 100644
--- a/Notes.txt
+++ b/Notes.txt
@@ -3,14 +3,14 @@ Publish:
dotnet publish --configuration Release --runtime win7-x64
Create windows service:
-sc create IdentityServer.Api binPath= ""
+sc create Tuitio.Api binPath= ""
#######################################################################################################################################################
#######################################################################################################################################################
Push language package:
-dotnet nuget push IdentityServer.PublishedLanguage.1.1.0.nupkg -k ******** -s http://********/NuGetServer/nuget
-dotnet nuget push IdentityServer.Wrapper.1.1.0.nupkg -k ******** -s http://********/NuGetServer/nuget
+dotnet nuget push Tuitio.PublishedLanguage.1.1.0.nupkg -k ******** -s http://********/NuGetServer/nuget
+dotnet nuget push Tuitio.Wrapper.1.1.0.nupkg -k ******** -s http://********/NuGetServer/nuget
#######################################################################################################################################################
TO DO:
@@ -22,7 +22,7 @@ Docker commands:
Create image:
--from solution folder:
-docker image build -t "identity-server-api:1.0.1" -f "IdentityServer.Api/Dockerfile" .
+docker image build -t "identity-server-api:1.0.1" -f "Tuitio.Api/Dockerfile" .
Run image:
docker run -p 5053:80 -it identity-server-api:1.0.1
diff --git a/README.md b/README.md
index b591d7d..f99ae34 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,35 @@
-# Identity Server
+# Tuitio
-This project represents a simple identity server implementation focused strictly on the needs of my home lab.
+Tuitio is a simple identity server implementation focused strictly on the needs of my home lab.
At the moment it has a simple API consisting of only two methods:
-* ```/identity/authenticate``` - takes care of authenticating a user based on credentials and generates an access token.
-* ```/identity/authorize``` - deals with the authorization of a token (verifies its existence, validity, authenticity, etc)
+* ```/identity/authenticate``` - handles user authentication using credentials and generates an access token.
+* ```/identity/authorize``` - manages the authorization process for a token, including verification of its existence, validity, and authenticity.
+
+***Tuitio*** is a latin word that encompasses meanings such as supervision, safeguarding, defense, guard duty, and protection.
+
+## Database
+Currently, the database server supported by the system is only Microsoft SQL Server. In the following versions, the system will also be compatible with PostgreSQL and SQLite.
+
+## Logging
+The logging functionality is managed with Serilog, and its configuration is done in the ```appsettings.json``` file. In addition to its standard configuration, Tuitio also has a preconfigured area where two destinations for logs are available: SqlServer database and Seq. Each of the destinations can be activated or not. If logging in the console is sufficient, all additional logging destinations can be disabled.
+This configuration area is:
+
+```
+"Logs": {
+ "SqlServer": {
+ "Enabled": false,
+ "Connection": "Server=;Database=;User Id=;Password=;"
+ },
+ "Seq": {
+ "Enabled": false,
+ "Url": "",
+ "ApiKey": ""
+ }
+}
+```
+
+## Hosting
+The only hosting environment tested for this service is Docker, but considering that .NET 6 is cross platform, it can most likely be hosted in any environment.
## Stack
* .NET (C#)
@@ -11,4 +37,4 @@ At the moment it has a simple API consisting of only two methods:
* SQL Server
* Swagger
* Docker
-* Shell
+* Seq
\ No newline at end of file
diff --git a/ReleaseNotes.xml b/ReleaseNotes.xml
index 935ffd5..48b7fb7 100644
--- a/ReleaseNotes.xml
+++ b/ReleaseNotes.xml
@@ -9,8 +9,8 @@
- Authentication: An user name and a password are required in the request body. The request type is POST. The output is an object with the following structure: { token: { raw: "***", validFrom: "", validUntil: "" }, status: "SUCCESS" }
- Authorization: The request type is also POST and and its scope is to authorize a token. The input is just the token in string format: { token: "***" }
For .NET consumers there are two nuget packages developed to facilitate the integration with this identity server:
- - IdentityServer.PublishedLanguage: It contains constants and classes for data transfer objects.
- - IdentityServer.Wrapper: It compose and executes all the REST requests to the identity server and offers to a consumer a simple interface with all methods. This interface can be injected with dependency injection at consumer startup with UseIdentityServices method. The only input is the server base address.
+ - Tuitio.PublishedLanguage: It contains constants and classes for data transfer objects.
+ - Tuitio.Wrapper: It compose and executes all the REST requests to the identity server and offers to a consumer a simple interface with all methods. This interface can be injected with dependency injection at consumer startup with UseIdentityServices method. The only input is the server base address.
- The source of this nugets is public, but on my personal server: https://lab.code-rove.com/public-nuget-server/nuget
@@ -27,13 +27,13 @@
1.1.0
◾ Upgrade all projects to .NET 5
- ◾ Upgrade packages MicrosoftExtensions, AutoMapper, EntityFramework, NDB
+ ◾ Upgrade packages MicrosoftExtensions, AutoMapper, EntityFramework, Netmash
1.1.1
- ◾ Added NDB.Infrastructure.DatabaseMigration
+ ◾ Added Netmash.Infrastructure.DatabaseMigration
◾ Organized sql scripts to meet database migrator requirements
@@ -49,4 +49,15 @@
◾ Upgrade the migration service to version 1.1.0. Migration metadata is now stored in the sql server database.
+
+ 2.0.0
+
+ ◾ Tuitio rebranding
+ ◾ .NET 6 upgrade
+ ◾ Nuget packages upgrade
+ ◾ Added Seq logging
+ ◾ Refactoring and code cleanup
+ ◾ Added README.md file
+
+
\ No newline at end of file
diff --git a/IdentityServer.sln b/Tuitio.sln
similarity index 69%
rename from IdentityServer.sln
rename to Tuitio.sln
index 78baac9..004792e 100644
--- a/IdentityServer.sln
+++ b/Tuitio.sln
@@ -5,37 +5,29 @@ VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{5A8FF505-3E4D-4258-BC3E-CACD74A7B98C}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.Api", "IdentityServer.Api\IdentityServer.Api.csproj", "{2F84E560-EEC0-4511-B8D9-2C35C226B688}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio", "src\Tuitio\Tuitio.csproj", "{2F84E560-EEC0-4511-B8D9-2C35C226B688}"
EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0B8B6E9B-0200-47EC-91D9-BEDF4BFC248F}"
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution items", "solution items", "{0B8B6E9B-0200-47EC-91D9-BEDF4BFC248F}"
ProjectSection(SolutionItems) = preProject
.dockerignore = .dockerignore
.gitattributes = .gitattributes
.gitignore = .gitignore
dependencies.props = dependencies.props
Directory.Build.props = Directory.Build.props
- Documentation.md = Documentation.md
- Notes.txt = Notes.txt
NuGet.config = NuGet.config
- ReleaseNotes.xml = ReleaseNotes.xml
README.md = README.md
+ ReleaseNotes.xml = ReleaseNotes.xml
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.Application", "IdentityServer.Application\IdentityServer.Application.csproj", "{6556D255-AF22-478E-A71A-BE37C16D5EE4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio.Application", "src\Tuitio.Application\Tuitio.Application.csproj", "{6556D255-AF22-478E-A71A-BE37C16D5EE4}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.Domain", "IdentityServer.Domain\IdentityServer.Domain.csproj", "{5890B079-3CB0-4AD6-8809-BB2E081590B1}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio.Domain", "src\Tuitio.Domain\Tuitio.Domain.csproj", "{5890B079-3CB0-4AD6-8809-BB2E081590B1}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.Domain.Data", "IdentityServer.Domain.Data\IdentityServer.Domain.Data.csproj", "{CE81A435-49AC-4544-A381-FAC91BEB3C49}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio.Domain.Data", "src\Tuitio.Domain.Data\Tuitio.Domain.Data.csproj", "{CE81A435-49AC-4544-A381-FAC91BEB3C49}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.PublishedLanguage", "IdentityServer.PublishedLanguage\IdentityServer.PublishedLanguage.csproj", "{67B4D1FF-D02E-4DA6-9FB8-F71667360448}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio.PublishedLanguage", "src\Tuitio.PublishedLanguage\Tuitio.PublishedLanguage.csproj", "{67B4D1FF-D02E-4DA6-9FB8-F71667360448}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServer.Wrapper", "IdentityServer.Wrapper\IdentityServer.Wrapper.csproj", "{F6FEC33B-C79E-4484-B356-9C7F1A5E5D95}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{5A9268B6-F73B-4773-86BF-45DFF7EF75F7}"
- ProjectSection(SolutionItems) = preProject
- build-amd64.sh = build-amd64.sh
- release.sh = release.sh
- EndProjectSection
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tuitio.Wrapper", "src\Tuitio.Wrapper\Tuitio.Wrapper.csproj", "{F6FEC33B-C79E-4484-B356-9C7F1A5E5D95}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -78,7 +70,6 @@ Global
{CE81A435-49AC-4544-A381-FAC91BEB3C49} = {5A8FF505-3E4D-4258-BC3E-CACD74A7B98C}
{67B4D1FF-D02E-4DA6-9FB8-F71667360448} = {5A8FF505-3E4D-4258-BC3E-CACD74A7B98C}
{F6FEC33B-C79E-4484-B356-9C7F1A5E5D95} = {5A8FF505-3E4D-4258-BC3E-CACD74A7B98C}
- {5A9268B6-F73B-4773-86BF-45DFF7EF75F7} = {0B8B6E9B-0200-47EC-91D9-BEDF4BFC248F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E93DC46D-9C55-4A05-B299-497CDD90747E}
diff --git a/build-amd64.sh b/build-amd64.sh
deleted file mode 100644
index 7af68e6..0000000
--- a/build-amd64.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# chmod u+x build-amd64.sh
-echo "Welcome!"
-
-version="1.1.3-alpha3"
-localRegistryPass="************"
-
-echo "Create docker image with version $version."
-docker image build -t "identity-server:$version" -f "IdentityServer.Api/Dockerfile" .
-
-echo "Tag docker image with registry prefix."
-docker tag identity-server:$version alpine-nexus:8500/identity/identity-server:$version
-
-echo "Login to alpine-nexus registry."
-docker login --username=admin --password=$localRegistryPass alpine-nexus:8500
-
-echo "Push image alpine-nexus:8500/identity/identity-server:$version to registry."
-docker push alpine-nexus:8500/identity/identity-server:$version
-
-echo "Remove image alpine-nexus:8500/identity/identity-server:$version from local machine."
-docker rmi alpine-nexus:8500/identity/identity-server:$version
-
-echo "DONE!"
\ No newline at end of file
diff --git a/dependencies.props b/dependencies.props
index 1b56d05..4cafce3 100644
--- a/dependencies.props
+++ b/dependencies.props
@@ -1,17 +1,16 @@
- 5.0.0
- 4.1.0
- 3.1.0
- 4.0.0
+ 6.0.0
+ 6.1.0
+ 5.2.2
5.6.1
- 10.1.1
- 8.1.1
- 6.0.0
- 5.3.1
- 5.0.12
- 1.0.2
- 1.0.0
- 1.1.3
+ 12.0.1
+ 12.0.0
+ 9.0.0
+ 6.0.1
+ 13.0.1
+ 1.0.6
+ 1.2.0
+ 1.0.0
\ No newline at end of file
diff --git a/release.sh b/release.sh
deleted file mode 100644
index 6ebd4a4..0000000
--- a/release.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-echo "Welcome!"
-
-version="1.1.3"
-oldver="1.1.2"
-
-echo "Pull docker image identity-server:$version from registry."
-docker pull alpine-nexus:8500/identity/identity-server:$version
-
-echo "Stop old container."
-docker stop identity-server && docker rm identity-server
-
-echo "Run new container."
-docker run -d --name identity-server --restart=always --memory 500mb --memory-reservation 100mb -p 5007:80 alpine-nexus:8500/identity/identity-server:$version
-# https://phoenixnap.com/kb/docker-memory-and-cpu-limit
-
-echo "Remove old image identity-server:$oldver."
-docker rmi alpine-nexus:8500/identity/identity-server:$oldver
-
-echo "Get container logs:"
-docker logs identity-server
-
-echo "DONE!"
\ No newline at end of file
diff --git a/IdentityServer.Application/CommandHandlers/AuthenticateUserHandler.cs b/src/Tuitio.Application/CommandHandlers/AuthenticateUserHandler.cs
similarity index 83%
rename from IdentityServer.Application/CommandHandlers/AuthenticateUserHandler.cs
rename to src/Tuitio.Application/CommandHandlers/AuthenticateUserHandler.cs
index 4419192..c0de240 100644
--- a/IdentityServer.Application/CommandHandlers/AuthenticateUserHandler.cs
+++ b/src/Tuitio.Application/CommandHandlers/AuthenticateUserHandler.cs
@@ -1,15 +1,15 @@
using AutoMapper;
-using IdentityServer.Application.Commands;
-using IdentityServer.Application.Services;
-using IdentityServer.PublishedLanguage.Constants;
-using IdentityServer.PublishedLanguage.Dto;
-using IdentityServer.PublishedLanguage.Events;
+using Tuitio.Application.Commands;
+using Tuitio.Application.Services;
+using Tuitio.PublishedLanguage.Constants;
+using Tuitio.PublishedLanguage.Dto;
+using Tuitio.PublishedLanguage.Events;
using MediatR;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
-namespace IdentityServer.Application.CommandHandlers
+namespace Tuitio.Application.CommandHandlers
{
public class AuthenticateUserHandler : IRequestHandler
{
diff --git a/IdentityServer.Application/CommandHandlers/AuthorizeTokenHandler.cs b/src/Tuitio.Application/CommandHandlers/AuthorizeTokenHandler.cs
similarity index 86%
rename from IdentityServer.Application/CommandHandlers/AuthorizeTokenHandler.cs
rename to src/Tuitio.Application/CommandHandlers/AuthorizeTokenHandler.cs
index 93d784a..b448d3f 100644
--- a/IdentityServer.Application/CommandHandlers/AuthorizeTokenHandler.cs
+++ b/src/Tuitio.Application/CommandHandlers/AuthorizeTokenHandler.cs
@@ -1,13 +1,13 @@
using AutoMapper;
-using IdentityServer.Application.Commands;
-using IdentityServer.Application.Services;
-using IdentityServer.PublishedLanguage.Dto;
+using Tuitio.Application.Commands;
+using Tuitio.Application.Services;
+using Tuitio.PublishedLanguage.Dto;
using MediatR;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
-namespace IdentityServer.Application.CommandHandlers
+namespace Tuitio.Application.CommandHandlers
{
public class AuthorizeTokenHandler : IRequestHandler
{
diff --git a/src/Tuitio.Application/Commands/AuthenticateUser.cs b/src/Tuitio.Application/Commands/AuthenticateUser.cs
new file mode 100644
index 0000000..a5c466f
--- /dev/null
+++ b/src/Tuitio.Application/Commands/AuthenticateUser.cs
@@ -0,0 +1,11 @@
+using MediatR;
+using Tuitio.PublishedLanguage.Events;
+
+namespace Tuitio.Application.Commands
+{
+ public class AuthenticateUser : IRequest
+ {
+ public string UserName { get; set; }
+ public string Password { get; set; }
+ }
+}
diff --git a/src/Tuitio.Application/Commands/AuthorizeToken.cs b/src/Tuitio.Application/Commands/AuthorizeToken.cs
new file mode 100644
index 0000000..31854f6
--- /dev/null
+++ b/src/Tuitio.Application/Commands/AuthorizeToken.cs
@@ -0,0 +1,10 @@
+using MediatR;
+using Tuitio.PublishedLanguage.Dto;
+
+namespace Tuitio.Application.Commands
+{
+ public class AuthorizeToken : IRequest
+ {
+ public string Token { get; set; }
+ }
+}
diff --git a/IdentityServer.Application/DependencyInjectionExtensions.cs b/src/Tuitio.Application/DependencyInjectionExtensions.cs
similarity index 77%
rename from IdentityServer.Application/DependencyInjectionExtensions.cs
rename to src/Tuitio.Application/DependencyInjectionExtensions.cs
index 02e5320..ee1b2ac 100644
--- a/IdentityServer.Application/DependencyInjectionExtensions.cs
+++ b/src/Tuitio.Application/DependencyInjectionExtensions.cs
@@ -1,10 +1,10 @@
-using IdentityServer.Application.Services;
-using IdentityServer.Application.Services.Abstractions;
-using IdentityServer.Application.Stores;
-using IdentityServer.Domain.Abstractions;
+using Tuitio.Application.Services;
+using Tuitio.Application.Services.Abstractions;
+using Tuitio.Application.Stores;
+using Tuitio.Domain.Abstractions;
using Microsoft.Extensions.DependencyInjection;
-namespace IdentityServer.Application
+namespace Tuitio.Application
{
public static class DependencyInjectionExtensions
{
diff --git a/IdentityServer.Application/Mappings/MappingProfile.cs b/src/Tuitio.Application/Mappings/MappingProfile.cs
similarity index 81%
rename from IdentityServer.Application/Mappings/MappingProfile.cs
rename to src/Tuitio.Application/Mappings/MappingProfile.cs
index f09334c..10804f2 100644
--- a/IdentityServer.Application/Mappings/MappingProfile.cs
+++ b/src/Tuitio.Application/Mappings/MappingProfile.cs
@@ -1,10 +1,10 @@
using AutoMapper;
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Entities;
using System.Collections.Generic;
-using dto = IdentityServer.PublishedLanguage.Dto;
-using models = IdentityServer.Domain.Models;
+using dto = Tuitio.PublishedLanguage.Dto;
+using models = Tuitio.Domain.Models;
-namespace IdentityServer.Application.Mappings
+namespace Tuitio.Application.Mappings
{
public class MappingProfile : Profile
{
diff --git a/IdentityServer.Application/Services/Abstractions/IBehaviorService.cs b/src/Tuitio.Application/Services/Abstractions/IBehaviorService.cs
similarity index 57%
rename from IdentityServer.Application/Services/Abstractions/IBehaviorService.cs
rename to src/Tuitio.Application/Services/Abstractions/IBehaviorService.cs
index 7a7c7b9..c79ffa6 100644
--- a/IdentityServer.Application/Services/Abstractions/IBehaviorService.cs
+++ b/src/Tuitio.Application/Services/Abstractions/IBehaviorService.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Application.Services.Abstractions
+namespace Tuitio.Application.Services.Abstractions
{
public interface IBehaviorService
{
diff --git a/IdentityServer.Application/Services/Abstractions/IHashingService.cs b/src/Tuitio.Application/Services/Abstractions/IHashingService.cs
similarity index 80%
rename from IdentityServer.Application/Services/Abstractions/IHashingService.cs
rename to src/Tuitio.Application/Services/Abstractions/IHashingService.cs
index 627de1e..84e7c23 100644
--- a/IdentityServer.Application/Services/Abstractions/IHashingService.cs
+++ b/src/Tuitio.Application/Services/Abstractions/IHashingService.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Application.Services.Abstractions
+namespace Tuitio.Application.Services.Abstractions
{
internal interface IHashingService
{
diff --git a/IdentityServer.Application/Services/BehaviorService.cs b/src/Tuitio.Application/Services/BehaviorService.cs
similarity index 85%
rename from IdentityServer.Application/Services/BehaviorService.cs
rename to src/Tuitio.Application/Services/BehaviorService.cs
index bbd33c9..210d9a7 100644
--- a/IdentityServer.Application/Services/BehaviorService.cs
+++ b/src/Tuitio.Application/Services/BehaviorService.cs
@@ -1,14 +1,14 @@
-using IdentityServer.Application.Services.Abstractions;
-using IdentityServer.Application.Stores;
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
-using IdentityServer.Domain.Repositories;
+using Tuitio.Application.Services.Abstractions;
+using Tuitio.Application.Stores;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
+using Tuitio.Domain.Repositories;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal class BehaviorService : IBehaviorService
{
diff --git a/IdentityServer.Application/Services/ConfigProvider.cs b/src/Tuitio.Application/Services/ConfigProvider.cs
similarity index 78%
rename from IdentityServer.Application/Services/ConfigProvider.cs
rename to src/Tuitio.Application/Services/ConfigProvider.cs
index 755a02b..6c1a0eb 100644
--- a/IdentityServer.Application/Services/ConfigProvider.cs
+++ b/src/Tuitio.Application/Services/ConfigProvider.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Abstractions;
-using IdentityServer.Domain.Models.Config;
+using Tuitio.Domain.Abstractions;
+using Tuitio.Domain.Models.Config;
using Microsoft.Extensions.Configuration;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal class ConfigProvider : IConfigProvider
{
diff --git a/IdentityServer.Application/Services/HashingService.cs b/src/Tuitio.Application/Services/HashingService.cs
similarity index 95%
rename from IdentityServer.Application/Services/HashingService.cs
rename to src/Tuitio.Application/Services/HashingService.cs
index a0f7b53..0145dcb 100644
--- a/IdentityServer.Application/Services/HashingService.cs
+++ b/src/Tuitio.Application/Services/HashingService.cs
@@ -1,9 +1,9 @@
-using IdentityServer.Application.Services.Abstractions;
+using Tuitio.Application.Services.Abstractions;
using System;
using System.Security.Authentication;
using System.Security.Cryptography;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal class HashingService : IHashingService
{
diff --git a/IdentityServer.Application/Services/ITokenService.cs b/src/Tuitio.Application/Services/ITokenService.cs
similarity index 54%
rename from IdentityServer.Application/Services/ITokenService.cs
rename to src/Tuitio.Application/Services/ITokenService.cs
index 7ec21e9..03f3566 100644
--- a/IdentityServer.Application/Services/ITokenService.cs
+++ b/src/Tuitio.Application/Services/ITokenService.cs
@@ -1,7 +1,7 @@
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal interface ITokenService
{
diff --git a/IdentityServer.Application/Services/IUserService.cs b/src/Tuitio.Application/Services/IUserService.cs
similarity index 68%
rename from IdentityServer.Application/Services/IUserService.cs
rename to src/Tuitio.Application/Services/IUserService.cs
index 70145a2..8248a58 100644
--- a/IdentityServer.Application/Services/IUserService.cs
+++ b/src/Tuitio.Application/Services/IUserService.cs
@@ -1,7 +1,7 @@
-using IdentityServer.Domain.Models;
+using Tuitio.Domain.Models;
using System.Threading.Tasks;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
public interface IUserService
{
diff --git a/IdentityServer.Application/Services/TokenService.cs b/src/Tuitio.Application/Services/TokenService.cs
similarity index 93%
rename from IdentityServer.Application/Services/TokenService.cs
rename to src/Tuitio.Application/Services/TokenService.cs
index f3a32b0..98605dc 100644
--- a/IdentityServer.Application/Services/TokenService.cs
+++ b/src/Tuitio.Application/Services/TokenService.cs
@@ -1,13 +1,13 @@
using AutoMapper;
-using IdentityServer.Domain.Abstractions;
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
+using Tuitio.Domain.Abstractions;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
using Newtonsoft.Json;
using System;
using System.Text;
using System.Text.RegularExpressions;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal class TokenService : ITokenService
{
diff --git a/IdentityServer.Application/Services/UserService.cs b/src/Tuitio.Application/Services/UserService.cs
similarity index 86%
rename from IdentityServer.Application/Services/UserService.cs
rename to src/Tuitio.Application/Services/UserService.cs
index 956d05b..57e2abc 100644
--- a/IdentityServer.Application/Services/UserService.cs
+++ b/src/Tuitio.Application/Services/UserService.cs
@@ -1,13 +1,13 @@
-using IdentityServer.Application.Services.Abstractions;
-using IdentityServer.Application.Stores;
-using IdentityServer.Domain.Abstractions;
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
-using IdentityServer.Domain.Repositories;
+using Tuitio.Application.Services.Abstractions;
+using Tuitio.Application.Stores;
+using Tuitio.Domain.Abstractions;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
+using Tuitio.Domain.Repositories;
using System;
using System.Threading.Tasks;
-namespace IdentityServer.Application.Services
+namespace Tuitio.Application.Services
{
internal class UserService : IUserService
{
diff --git a/IdentityServer.Application/Stores/ITokenStore.cs b/src/Tuitio.Application/Stores/ITokenStore.cs
similarity index 65%
rename from IdentityServer.Application/Stores/ITokenStore.cs
rename to src/Tuitio.Application/Stores/ITokenStore.cs
index c61ef10..7ee7aef 100644
--- a/IdentityServer.Application/Stores/ITokenStore.cs
+++ b/src/Tuitio.Application/Stores/ITokenStore.cs
@@ -1,6 +1,6 @@
-using IdentityServer.Domain.Models;
+using Tuitio.Domain.Models;
-namespace IdentityServer.Application.Stores
+namespace Tuitio.Application.Stores
{
internal interface ITokenStore
{
diff --git a/IdentityServer.Application/Stores/TokenStore.cs b/src/Tuitio.Application/Stores/TokenStore.cs
similarity index 91%
rename from IdentityServer.Application/Stores/TokenStore.cs
rename to src/Tuitio.Application/Stores/TokenStore.cs
index f7bc716..e374950 100644
--- a/IdentityServer.Application/Stores/TokenStore.cs
+++ b/src/Tuitio.Application/Stores/TokenStore.cs
@@ -1,10 +1,10 @@
-using IdentityServer.Application.Services;
-using IdentityServer.Domain.Models;
+using Tuitio.Application.Services;
+using Tuitio.Domain.Models;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
-namespace IdentityServer.Application.Stores
+namespace Tuitio.Application.Stores
{
internal class TokenStore : ITokenStore
{
diff --git a/IdentityServer.Application/IdentityServer.Application.csproj b/src/Tuitio.Application/Tuitio.Application.csproj
similarity index 66%
rename from IdentityServer.Application/IdentityServer.Application.csproj
rename to src/Tuitio.Application/Tuitio.Application.csproj
index 77faec9..924dd6c 100644
--- a/IdentityServer.Application/IdentityServer.Application.csproj
+++ b/src/Tuitio.Application/Tuitio.Application.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
@@ -11,13 +11,12 @@
-
-
+
-
-
+
+
diff --git a/IdentityServer.Domain.Data/DbContexts/IdentityDbContext.cs b/src/Tuitio.Domain.Data/DbContexts/IdentityDbContext.cs
similarity index 86%
rename from IdentityServer.Domain.Data/DbContexts/IdentityDbContext.cs
rename to src/Tuitio.Domain.Data/DbContexts/IdentityDbContext.cs
index 9b50c20..dc35ca1 100644
--- a/IdentityServer.Domain.Data/DbContexts/IdentityDbContext.cs
+++ b/src/Tuitio.Domain.Data/DbContexts/IdentityDbContext.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Data.EntityTypeConfiguration;
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Data.EntityTypeConfiguration;
+using Tuitio.Domain.Entities;
using Microsoft.EntityFrameworkCore;
-namespace IdentityServer.Domain.Data.DbContexts
+namespace Tuitio.Domain.Data.DbContexts
{
public class IdentityDbContext : DbContext
{
diff --git a/IdentityServer.Domain.Data/DependencyInjectionExtensions.cs b/src/Tuitio.Domain.Data/DependencyInjectionExtensions.cs
similarity index 81%
rename from IdentityServer.Domain.Data/DependencyInjectionExtensions.cs
rename to src/Tuitio.Domain.Data/DependencyInjectionExtensions.cs
index 959cdc6..92add97 100644
--- a/IdentityServer.Domain.Data/DependencyInjectionExtensions.cs
+++ b/src/Tuitio.Domain.Data/DependencyInjectionExtensions.cs
@@ -1,11 +1,11 @@
-using IdentityServer.Domain.Data.DbContexts;
-using IdentityServer.Domain.Data.Repositories;
-using IdentityServer.Domain.Repositories;
+using Tuitio.Domain.Data.DbContexts;
+using Tuitio.Domain.Data.Repositories;
+using Tuitio.Domain.Repositories;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
-namespace IdentityServer.Domain.Data
+namespace Tuitio.Domain.Data
{
public static class DependencyInjectionExtensions
{
diff --git a/IdentityServer.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs b/src/Tuitio.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs
similarity index 84%
rename from IdentityServer.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs
rename to src/Tuitio.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs
index f769238..acdb6bb 100644
--- a/IdentityServer.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs
+++ b/src/Tuitio.Domain.Data/EntityTypeConfiguration/AppUserConfiguration.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-namespace IdentityServer.Domain.Data.EntityTypeConfiguration
+namespace Tuitio.Domain.Data.EntityTypeConfiguration
{
class AppUserConfiguration : IEntityTypeConfiguration
{
diff --git a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs
similarity index 79%
rename from IdentityServer.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs
rename to src/Tuitio.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs
index 915b6a6..3a624fd 100644
--- a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs
+++ b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserClaimConfiguration.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-namespace IdentityServer.Domain.Data.EntityTypeConfiguration
+namespace Tuitio.Domain.Data.EntityTypeConfiguration
{
class UserClaimConfiguration : IEntityTypeConfiguration
{
diff --git a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs
similarity index 79%
rename from IdentityServer.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs
rename to src/Tuitio.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs
index f5433f9..ce4c367 100644
--- a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs
+++ b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserStatusConfiguration.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-namespace IdentityServer.Domain.Data.EntityTypeConfiguration
+namespace Tuitio.Domain.Data.EntityTypeConfiguration
{
class UserStatusConfiguration : IEntityTypeConfiguration
{
diff --git a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs
similarity index 79%
rename from IdentityServer.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs
rename to src/Tuitio.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs
index 38a5d52..cc98b55 100644
--- a/IdentityServer.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs
+++ b/src/Tuitio.Domain.Data/EntityTypeConfiguration/UserTokenConfiguration.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Entities;
+using Tuitio.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
-namespace IdentityServer.Domain.Data.EntityTypeConfiguration
+namespace Tuitio.Domain.Data.EntityTypeConfiguration
{
class UserTokenConfiguration : IEntityTypeConfiguration
{
diff --git a/IdentityServer.Domain.Data/Repositories/IdentityRepository.cs b/src/Tuitio.Domain.Data/Repositories/IdentityRepository.cs
similarity index 87%
rename from IdentityServer.Domain.Data/Repositories/IdentityRepository.cs
rename to src/Tuitio.Domain.Data/Repositories/IdentityRepository.cs
index 2883380..60a28e4 100644
--- a/IdentityServer.Domain.Data/Repositories/IdentityRepository.cs
+++ b/src/Tuitio.Domain.Data/Repositories/IdentityRepository.cs
@@ -1,13 +1,13 @@
-using IdentityServer.Domain.Data.DbContexts;
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
-using IdentityServer.Domain.Repositories;
+using Tuitio.Domain.Data.DbContexts;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
+using Tuitio.Domain.Repositories;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
using System.Threading.Tasks;
-namespace IdentityServer.Domain.Data.Repositories
+namespace Tuitio.Domain.Data.Repositories
{
class IdentityRepository : IIdentityRepository
{
diff --git a/IdentityServer.Domain.Data/Scripts/1.0.0/01.UserStatus table.sql b/src/Tuitio.Domain.Data/Scripts/1.0.0/01.UserStatus table.sql
similarity index 100%
rename from IdentityServer.Domain.Data/Scripts/1.0.0/01.UserStatus table.sql
rename to src/Tuitio.Domain.Data/Scripts/1.0.0/01.UserStatus table.sql
diff --git a/IdentityServer.Domain.Data/Scripts/1.0.0/02.AppUser table.sql b/src/Tuitio.Domain.Data/Scripts/1.0.0/02.AppUser table.sql
similarity index 100%
rename from IdentityServer.Domain.Data/Scripts/1.0.0/02.AppUser table.sql
rename to src/Tuitio.Domain.Data/Scripts/1.0.0/02.AppUser table.sql
diff --git a/IdentityServer.Domain.Data/Scripts/1.0.0/03.IDX_AppUser_Email_NOTNULL.sql b/src/Tuitio.Domain.Data/Scripts/1.0.0/03.IDX_AppUser_Email_NOTNULL.sql
similarity index 100%
rename from IdentityServer.Domain.Data/Scripts/1.0.0/03.IDX_AppUser_Email_NOTNULL.sql
rename to src/Tuitio.Domain.Data/Scripts/1.0.0/03.IDX_AppUser_Email_NOTNULL.sql
diff --git a/IdentityServer.Domain.Data/Scripts/1.0.1/01.UserClaim table.sql b/src/Tuitio.Domain.Data/Scripts/1.0.1/01.UserClaim table.sql
similarity index 100%
rename from IdentityServer.Domain.Data/Scripts/1.0.1/01.UserClaim table.sql
rename to src/Tuitio.Domain.Data/Scripts/1.0.1/01.UserClaim table.sql
diff --git a/IdentityServer.Domain.Data/Scripts/1.0.1/02.UserToken table.sql b/src/Tuitio.Domain.Data/Scripts/1.0.1/02.UserToken table.sql
similarity index 100%
rename from IdentityServer.Domain.Data/Scripts/1.0.1/02.UserToken table.sql
rename to src/Tuitio.Domain.Data/Scripts/1.0.1/02.UserToken table.sql
diff --git a/IdentityServer.Domain.Data/IdentityServer.Domain.Data.csproj b/src/Tuitio.Domain.Data/Tuitio.Domain.Data.csproj
similarity index 88%
rename from IdentityServer.Domain.Data/IdentityServer.Domain.Data.csproj
rename to src/Tuitio.Domain.Data/Tuitio.Domain.Data.csproj
index 93c700d..edd04a6 100644
--- a/IdentityServer.Domain.Data/IdentityServer.Domain.Data.csproj
+++ b/src/Tuitio.Domain.Data/Tuitio.Domain.Data.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
@@ -9,7 +9,7 @@
-
+
diff --git a/IdentityServer.Domain/Abstractions/IConfigProvider.cs b/src/Tuitio.Domain/Abstractions/IConfigProvider.cs
similarity index 60%
rename from IdentityServer.Domain/Abstractions/IConfigProvider.cs
rename to src/Tuitio.Domain/Abstractions/IConfigProvider.cs
index c2ec84a..f36624e 100644
--- a/IdentityServer.Domain/Abstractions/IConfigProvider.cs
+++ b/src/Tuitio.Domain/Abstractions/IConfigProvider.cs
@@ -1,6 +1,6 @@
-using IdentityServer.Domain.Models.Config;
+using Tuitio.Domain.Models.Config;
-namespace IdentityServer.Domain.Abstractions
+namespace Tuitio.Domain.Abstractions
{
public interface IConfigProvider
{
diff --git a/IdentityServer.Domain/Entities/AppUser.cs b/src/Tuitio.Domain/Entities/AppUser.cs
similarity index 95%
rename from IdentityServer.Domain/Entities/AppUser.cs
rename to src/Tuitio.Domain/Entities/AppUser.cs
index ec1e415..bcc81c5 100644
--- a/IdentityServer.Domain/Entities/AppUser.cs
+++ b/src/Tuitio.Domain/Entities/AppUser.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
-namespace IdentityServer.Domain.Entities
+namespace Tuitio.Domain.Entities
{
public class AppUser
{
diff --git a/IdentityServer.Domain/Entities/UserClaim.cs b/src/Tuitio.Domain/Entities/UserClaim.cs
similarity index 83%
rename from IdentityServer.Domain/Entities/UserClaim.cs
rename to src/Tuitio.Domain/Entities/UserClaim.cs
index 22231f7..59d03b0 100644
--- a/IdentityServer.Domain/Entities/UserClaim.cs
+++ b/src/Tuitio.Domain/Entities/UserClaim.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Domain.Entities
+namespace Tuitio.Domain.Entities
{
public class UserClaim
{
diff --git a/IdentityServer.Domain/Entities/UserStatus.cs b/src/Tuitio.Domain/Entities/UserStatus.cs
similarity index 80%
rename from IdentityServer.Domain/Entities/UserStatus.cs
rename to src/Tuitio.Domain/Entities/UserStatus.cs
index 50c6622..3e1acab 100644
--- a/IdentityServer.Domain/Entities/UserStatus.cs
+++ b/src/Tuitio.Domain/Entities/UserStatus.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Domain.Entities
+namespace Tuitio.Domain.Entities
{
public class UserStatus
{
diff --git a/IdentityServer.Domain/Entities/UserToken.cs b/src/Tuitio.Domain/Entities/UserToken.cs
similarity index 88%
rename from IdentityServer.Domain/Entities/UserToken.cs
rename to src/Tuitio.Domain/Entities/UserToken.cs
index bde0b50..de082fa 100644
--- a/IdentityServer.Domain/Entities/UserToken.cs
+++ b/src/Tuitio.Domain/Entities/UserToken.cs
@@ -1,6 +1,6 @@
using System;
-namespace IdentityServer.Domain.Entities
+namespace Tuitio.Domain.Entities
{
public class UserToken
{
diff --git a/IdentityServer.Domain/Models/Config/RestrictionsConfig.cs b/src/Tuitio.Domain/Models/Config/RestrictionsConfig.cs
similarity index 68%
rename from IdentityServer.Domain/Models/Config/RestrictionsConfig.cs
rename to src/Tuitio.Domain/Models/Config/RestrictionsConfig.cs
index c51cbe4..b08b252 100644
--- a/IdentityServer.Domain/Models/Config/RestrictionsConfig.cs
+++ b/src/Tuitio.Domain/Models/Config/RestrictionsConfig.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Domain.Models.Config
+namespace Tuitio.Domain.Models.Config
{
public class RestrictionsConfig
{
diff --git a/IdentityServer.Domain/Models/Config/TokenConfig.cs b/src/Tuitio.Domain/Models/Config/TokenConfig.cs
similarity index 66%
rename from IdentityServer.Domain/Models/Config/TokenConfig.cs
rename to src/Tuitio.Domain/Models/Config/TokenConfig.cs
index e6e65d7..c5b8f2e 100644
--- a/IdentityServer.Domain/Models/Config/TokenConfig.cs
+++ b/src/Tuitio.Domain/Models/Config/TokenConfig.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Domain.Models.Config
+namespace Tuitio.Domain.Models.Config
{
public class TokenConfig
{
diff --git a/IdentityServer.Domain/Models/Token.cs b/src/Tuitio.Domain/Models/Token.cs
similarity index 83%
rename from IdentityServer.Domain/Models/Token.cs
rename to src/Tuitio.Domain/Models/Token.cs
index bd2bf16..44c638e 100644
--- a/IdentityServer.Domain/Models/Token.cs
+++ b/src/Tuitio.Domain/Models/Token.cs
@@ -1,6 +1,6 @@
using System;
-namespace IdentityServer.Domain.Models
+namespace Tuitio.Domain.Models
{
public class Token
{
diff --git a/IdentityServer.Domain/Models/TokenCore.cs b/src/Tuitio.Domain/Models/TokenCore.cs
similarity index 92%
rename from IdentityServer.Domain/Models/TokenCore.cs
rename to src/Tuitio.Domain/Models/TokenCore.cs
index cb17362..e2fbae9 100644
--- a/IdentityServer.Domain/Models/TokenCore.cs
+++ b/src/Tuitio.Domain/Models/TokenCore.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace IdentityServer.Domain.Models
+namespace Tuitio.Domain.Models
{
public class TokenCore
{
diff --git a/IdentityServer.Domain/Repositories/IIdentityRepository.cs b/src/Tuitio.Domain/Repositories/IIdentityRepository.cs
similarity index 68%
rename from IdentityServer.Domain/Repositories/IIdentityRepository.cs
rename to src/Tuitio.Domain/Repositories/IIdentityRepository.cs
index a605378..1335924 100644
--- a/IdentityServer.Domain/Repositories/IIdentityRepository.cs
+++ b/src/Tuitio.Domain/Repositories/IIdentityRepository.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Domain.Entities;
-using IdentityServer.Domain.Models;
+using Tuitio.Domain.Entities;
+using Tuitio.Domain.Models;
using System.Threading.Tasks;
-namespace IdentityServer.Domain.Repositories
+namespace Tuitio.Domain.Repositories
{
public interface IIdentityRepository
{
diff --git a/IdentityServer.Domain/IdentityServer.Domain.csproj b/src/Tuitio.Domain/Tuitio.Domain.csproj
similarity index 64%
rename from IdentityServer.Domain/IdentityServer.Domain.csproj
rename to src/Tuitio.Domain/Tuitio.Domain.csproj
index f208d30..dbc1517 100644
--- a/IdentityServer.Domain/IdentityServer.Domain.csproj
+++ b/src/Tuitio.Domain/Tuitio.Domain.csproj
@@ -1,7 +1,7 @@
- net5.0
+ net6.0
diff --git a/IdentityServer.PublishedLanguage/Constants/AuthenticationStatus.cs b/src/Tuitio.PublishedLanguage/Constants/AuthenticationStatus.cs
similarity index 74%
rename from IdentityServer.PublishedLanguage/Constants/AuthenticationStatus.cs
rename to src/Tuitio.PublishedLanguage/Constants/AuthenticationStatus.cs
index 29da4fa..109363d 100644
--- a/IdentityServer.PublishedLanguage/Constants/AuthenticationStatus.cs
+++ b/src/Tuitio.PublishedLanguage/Constants/AuthenticationStatus.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.PublishedLanguage.Constants
+namespace Tuitio.PublishedLanguage.Constants
{
public struct AuthenticationStatus
{
diff --git a/IdentityServer.PublishedLanguage/Dto/Token.cs b/src/Tuitio.PublishedLanguage/Dto/Token.cs
similarity index 80%
rename from IdentityServer.PublishedLanguage/Dto/Token.cs
rename to src/Tuitio.PublishedLanguage/Dto/Token.cs
index 3a8c8e4..b8eff21 100644
--- a/IdentityServer.PublishedLanguage/Dto/Token.cs
+++ b/src/Tuitio.PublishedLanguage/Dto/Token.cs
@@ -1,6 +1,6 @@
using System;
-namespace IdentityServer.PublishedLanguage.Dto
+namespace Tuitio.PublishedLanguage.Dto
{
public class Token
{
diff --git a/IdentityServer.PublishedLanguage/Dto/TokenCore.cs b/src/Tuitio.PublishedLanguage/Dto/TokenCore.cs
similarity index 91%
rename from IdentityServer.PublishedLanguage/Dto/TokenCore.cs
rename to src/Tuitio.PublishedLanguage/Dto/TokenCore.cs
index 98873a9..5b55686 100644
--- a/IdentityServer.PublishedLanguage/Dto/TokenCore.cs
+++ b/src/Tuitio.PublishedLanguage/Dto/TokenCore.cs
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace IdentityServer.PublishedLanguage.Dto
+namespace Tuitio.PublishedLanguage.Dto
{
public class TokenCore
{
diff --git a/IdentityServer.PublishedLanguage/Events/AuthenticateUserResult.cs b/src/Tuitio.PublishedLanguage/Events/AuthenticateUserResult.cs
similarity index 58%
rename from IdentityServer.PublishedLanguage/Events/AuthenticateUserResult.cs
rename to src/Tuitio.PublishedLanguage/Events/AuthenticateUserResult.cs
index 9ebd117..fdecd40 100644
--- a/IdentityServer.PublishedLanguage/Events/AuthenticateUserResult.cs
+++ b/src/Tuitio.PublishedLanguage/Events/AuthenticateUserResult.cs
@@ -1,6 +1,6 @@
-using IdentityServer.PublishedLanguage.Dto;
+using Tuitio.PublishedLanguage.Dto;
-namespace IdentityServer.PublishedLanguage.Events
+namespace Tuitio.PublishedLanguage.Events
{
public class AuthenticateUserResult
{
diff --git a/src/Tuitio.PublishedLanguage/Tuitio.PublishedLanguage.csproj b/src/Tuitio.PublishedLanguage/Tuitio.PublishedLanguage.csproj
new file mode 100644
index 0000000..5c365bc
--- /dev/null
+++ b/src/Tuitio.PublishedLanguage/Tuitio.PublishedLanguage.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net6.0
+ Tuitio published language package
+ https://lab.code-rove.com/gitea/tudor.stanciu/tuitio
+ https://lab.code-rove.com/gitea/tudor.stanciu/tuitio
+ Git
+ Tuitio published language package
+ 2.0.0
+
+
+
diff --git a/IdentityServer.Wrapper/Constants/ApiRoutes.cs b/src/Tuitio.Wrapper/Constants/ApiRoutes.cs
similarity index 82%
rename from IdentityServer.Wrapper/Constants/ApiRoutes.cs
rename to src/Tuitio.Wrapper/Constants/ApiRoutes.cs
index 7a821ca..8c1b594 100644
--- a/IdentityServer.Wrapper/Constants/ApiRoutes.cs
+++ b/src/Tuitio.Wrapper/Constants/ApiRoutes.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Wrapper.Constants
+namespace Tuitio.Wrapper.Constants
{
internal struct ApiRoutes
{
diff --git a/IdentityServer.Wrapper/DependencyInjectionExtension.cs b/src/Tuitio.Wrapper/DependencyInjectionExtension.cs
similarity index 77%
rename from IdentityServer.Wrapper/DependencyInjectionExtension.cs
rename to src/Tuitio.Wrapper/DependencyInjectionExtension.cs
index 0f38086..1c7c49f 100644
--- a/IdentityServer.Wrapper/DependencyInjectionExtension.cs
+++ b/src/Tuitio.Wrapper/DependencyInjectionExtension.cs
@@ -1,8 +1,8 @@
-using IdentityServer.Wrapper.Models;
-using IdentityServer.Wrapper.Services;
+using Tuitio.Wrapper.Models;
+using Tuitio.Wrapper.Services;
using Microsoft.Extensions.DependencyInjection;
-namespace IdentityServer.Wrapper
+namespace Tuitio.Wrapper
{
public static class DependencyInjectionExtension
{
diff --git a/IdentityServer.Wrapper/Models/ServiceConfiguration.cs b/src/Tuitio.Wrapper/Models/ServiceConfiguration.cs
similarity index 83%
rename from IdentityServer.Wrapper/Models/ServiceConfiguration.cs
rename to src/Tuitio.Wrapper/Models/ServiceConfiguration.cs
index 9a29547..fc455a1 100644
--- a/IdentityServer.Wrapper/Models/ServiceConfiguration.cs
+++ b/src/Tuitio.Wrapper/Models/ServiceConfiguration.cs
@@ -1,4 +1,4 @@
-namespace IdentityServer.Wrapper.Models
+namespace Tuitio.Wrapper.Models
{
internal class ServiceConfiguration
{
diff --git a/IdentityServer.Wrapper/Services/IIdentityService.cs b/src/Tuitio.Wrapper/Services/IIdentityService.cs
similarity index 69%
rename from IdentityServer.Wrapper/Services/IIdentityService.cs
rename to src/Tuitio.Wrapper/Services/IIdentityService.cs
index 7871b3d..0c88975 100644
--- a/IdentityServer.Wrapper/Services/IIdentityService.cs
+++ b/src/Tuitio.Wrapper/Services/IIdentityService.cs
@@ -1,7 +1,7 @@
-using IdentityServer.PublishedLanguage.Dto;
+using Tuitio.PublishedLanguage.Dto;
using System.Threading.Tasks;
-namespace IdentityServer.Wrapper.Services
+namespace Tuitio.Wrapper.Services
{
public interface IIdentityService
{
diff --git a/IdentityServer.Wrapper/Services/IdentityService.cs b/src/Tuitio.Wrapper/Services/IdentityService.cs
similarity index 85%
rename from IdentityServer.Wrapper/Services/IdentityService.cs
rename to src/Tuitio.Wrapper/Services/IdentityService.cs
index 2120f91..7ed8a54 100644
--- a/IdentityServer.Wrapper/Services/IdentityService.cs
+++ b/src/Tuitio.Wrapper/Services/IdentityService.cs
@@ -1,13 +1,13 @@
-using IdentityServer.PublishedLanguage.Dto;
-using IdentityServer.Wrapper.Constants;
-using IdentityServer.Wrapper.Models;
-using NDB.Extensions.Http;
+using Tuitio.PublishedLanguage.Dto;
+using Tuitio.Wrapper.Constants;
+using Tuitio.Wrapper.Models;
+using Netmash.Extensions.Http;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
-namespace IdentityServer.Wrapper.Services
+namespace Tuitio.Wrapper.Services
{
internal class IdentityService : IIdentityService
{
diff --git a/src/Tuitio.Wrapper/Tuitio.Wrapper.csproj b/src/Tuitio.Wrapper/Tuitio.Wrapper.csproj
new file mode 100644
index 0000000..64453d9
--- /dev/null
+++ b/src/Tuitio.Wrapper/Tuitio.Wrapper.csproj
@@ -0,0 +1,24 @@
+
+
+
+ net6.0
+ Tuitio wrapper
+ Tuitio wrapper
+ https://lab.code-rove.com/gitea/tudor.stanciu/tuitio
+ Git
+ https://lab.code-rove.com/gitea/tudor.stanciu/tuitio
+ Tuitio wrapper
+ 2.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/IdentityServer.Api/Controllers/IdentityController.cs b/src/Tuitio/Controllers/IdentityController.cs
similarity index 92%
rename from IdentityServer.Api/Controllers/IdentityController.cs
rename to src/Tuitio/Controllers/IdentityController.cs
index 2c425fe..70e73b2 100644
--- a/IdentityServer.Api/Controllers/IdentityController.cs
+++ b/src/Tuitio/Controllers/IdentityController.cs
@@ -1,9 +1,9 @@
-using IdentityServer.Application.Commands;
+using Tuitio.Application.Commands;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
-namespace IdentityServer.Api.Controllers
+namespace Tuitio.Api.Controllers
{
[ApiController]
[Route("identity")]
diff --git a/IdentityServer.Api/Controllers/SystemController.cs b/src/Tuitio/Controllers/SystemController.cs
similarity index 94%
rename from IdentityServer.Api/Controllers/SystemController.cs
rename to src/Tuitio/Controllers/SystemController.cs
index 486bc55..e1f65ab 100644
--- a/IdentityServer.Api/Controllers/SystemController.cs
+++ b/src/Tuitio/Controllers/SystemController.cs
@@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System;
-namespace IdentityServer.Api.Controllers
+namespace Tuitio.Api.Controllers
{
[ApiController]
[Route("system")]
diff --git a/src/Tuitio/Dockerfile b/src/Tuitio/Dockerfile
new file mode 100644
index 0000000..45b36c2
--- /dev/null
+++ b/src/Tuitio/Dockerfile
@@ -0,0 +1,36 @@
+#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
+
+FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
+WORKDIR /app
+EXPOSE 80
+
+FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
+WORKDIR /workspace
+COPY ["dependencies.props", "."]
+COPY ["Directory.Build.props", "."]
+COPY ["NuGet.config", "."]
+COPY ["src/Tuitio/Tuitio.csproj", "src/Tuitio/"]
+COPY ["src/Tuitio.Application/Tuitio.Application.csproj", "src/Tuitio.Application/"]
+COPY ["src/Tuitio.Domain/Tuitio.Domain.csproj", "src/Tuitio.Domain/"]
+COPY ["src/Tuitio.PublishedLanguage/Tuitio.PublishedLanguage.csproj", "src/Tuitio.PublishedLanguage/"]
+COPY ["src/Tuitio.Domain.Data/Tuitio.Domain.Data.csproj", "src/Tuitio.Domain.Data/"]
+RUN dotnet restore "src/Tuitio/Tuitio.csproj"
+COPY . .
+WORKDIR "/workspace/src/Tuitio"
+RUN dotnet build "Tuitio.csproj" -c Release -o /app/build
+
+FROM build AS publish
+RUN dotnet publish "Tuitio.csproj" -c Release -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+
+ENV Urls="http://*:80"
+ENV TZ=Europe/Bucharest
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+#Workaround to lower the TLS level in container for old sql server version
+RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
+
+ENTRYPOINT ["dotnet", "Tuitio.dll"]
\ No newline at end of file
diff --git a/src/Tuitio/Extensions/DataTypeExtensions.cs b/src/Tuitio/Extensions/DataTypeExtensions.cs
new file mode 100644
index 0000000..efaacbd
--- /dev/null
+++ b/src/Tuitio/Extensions/DataTypeExtensions.cs
@@ -0,0 +1,8 @@
+namespace Tuitio.Extensions
+{
+ internal static class DataTypeExtensions
+ {
+ public static string Nullify(this string value)
+ => string.IsNullOrWhiteSpace(value) ? null : value;
+ }
+}
diff --git a/src/Tuitio/Extensions/LoggingExtensions.cs b/src/Tuitio/Extensions/LoggingExtensions.cs
new file mode 100644
index 0000000..609077a
--- /dev/null
+++ b/src/Tuitio/Extensions/LoggingExtensions.cs
@@ -0,0 +1,41 @@
+using Microsoft.Extensions.Configuration;
+using Serilog;
+using Serilog.Configuration;
+using Serilog.Sinks.MSSqlServer;
+using System;
+
+namespace Tuitio.Extensions
+{
+ internal static class LoggingExtensions
+ {
+ internal static LoggerSinkConfiguration ConfiguredDestinations(this LoggerSinkConfiguration writeTo, IConfiguration configuration)
+ {
+ var sqlServerEnabled = configuration.GetValue("Logs:SqlServer:Enabled");
+ var sqlServerConnection = configuration.GetValue("Logs:SqlServer:Connection");
+ var seqEnabled = configuration.GetValue("Logs:Seq:Enabled");
+ var seqUrl = configuration.GetValue("Logs:Seq:Url");
+ var seqApiKey = configuration.GetValue("Logs:Seq:ApiKey");
+
+ if (sqlServerEnabled && string.IsNullOrWhiteSpace(sqlServerConnection))
+ throw new Exception("If SqlServer logging is enabled, the SqlServer connection must be configured.");
+ if (seqEnabled && string.IsNullOrWhiteSpace(seqUrl))
+ throw new Exception("If Seq logging is enabled, the Seq URL must be configured.");
+
+ if (sqlServerEnabled)
+ {
+ var columnOptions = new ColumnOptions();
+ columnOptions.Store.Remove(StandardColumn.Properties);
+ columnOptions.Store.Remove(StandardColumn.MessageTemplate);
+ columnOptions.Store.Add(StandardColumn.LogEvent);
+ var mssqlSinkOptions = new MSSqlServerSinkOptions() { AutoCreateSqlTable = true, TableName = "__Logs" };
+
+ writeTo.MSSqlServer(sqlServerConnection, mssqlSinkOptions, columnOptions: columnOptions);
+ }
+
+ if (seqEnabled)
+ writeTo.Seq(seqUrl, apiKey: seqApiKey.Nullify());
+
+ return writeTo;
+ }
+ }
+}
diff --git a/src/Tuitio/Extensions/StartupExtensions.cs b/src/Tuitio/Extensions/StartupExtensions.cs
new file mode 100644
index 0000000..a4f76cc
--- /dev/null
+++ b/src/Tuitio/Extensions/StartupExtensions.cs
@@ -0,0 +1,62 @@
+using MediatR;
+using MediatR.Pipeline;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Netmash.Extensions.Swagger;
+using Netmash.Extensions.Swagger.Constants;
+using Netmash.Infrastructure.DatabaseMigration;
+using Netmash.Infrastructure.DatabaseMigration.Constants;
+using Tuitio.Application;
+using Tuitio.Application.Services.Abstractions;
+using Tuitio.Domain.Data;
+
+namespace Tuitio.Extensions
+{
+ public static class StartupExtensions
+ {
+ public static void ConfigureServices(this IServiceCollection services, IConfiguration configuration)
+ {
+ services.AddControllers();
+
+ // MediatR
+ services.AddMediatR(typeof(Application.Commands.AuthenticateUser).Assembly);
+ services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPreProcessorBehavior<,>));
+ services.AddScoped(typeof(IPipelineBehavior<,>), typeof(RequestPostProcessorBehavior<,>));
+
+ // AutoMapper
+ services.AddAutoMapper(
+ typeof(Application.Mappings.MappingProfile).Assembly);
+
+ // Swagger
+ services.AddSwagger("Tuitio API", AuthorizationType.None);
+
+ // Data access
+ services.AddMigration(DatabaseType.SQLServer, MetadataLocation.Database);
+ services.AddDataAccess();
+
+ // Application
+ services.AddApplicationServices();
+ }
+
+ // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
+ public static void Configure(this WebApplication app)
+ {
+ // global cors policy
+ app.UseCors(z => z.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
+
+ app.UseRouting();
+ app.UseAuthorization();
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapControllers();
+ });
+ app.ConfigureSwagger("Tuitio API");
+
+ app.UseMigration();
+
+ var behaviorService = app.Services.GetService();
+ behaviorService.FillTokenStore();
+ }
+ }
+}
diff --git a/src/Tuitio/Program.cs b/src/Tuitio/Program.cs
new file mode 100644
index 0000000..1b80410
--- /dev/null
+++ b/src/Tuitio/Program.cs
@@ -0,0 +1,48 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using Serilog;
+using System;
+using Tuitio.Extensions;
+
+namespace Tuitio.Api
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ var builder = WebApplication.CreateBuilder(args);
+
+ builder.Host.UseSerilog((_, loggerConfiguration) =>
+ {
+ loggerConfiguration
+ .ReadFrom.Configuration(builder.Configuration)
+ .Enrich.FromLogContext()
+ .WriteTo.Console()
+ .WriteTo.ConfiguredDestinations(builder.Configuration);
+ });
+
+ builder.Services.ConfigureServices(builder.Configuration);
+ var app = builder.Build();
+ app.Configure();
+
+ try
+ {
+ var urls = builder.Configuration.GetValue("Urls");
+ Log.Information("Starting Tuitio API...");
+ Log.Information($"API listening on {urls}");
+ Console.WriteLine("Application started. Press Ctrl+C to shut down.");
+ app.Run();
+ }
+ catch (Exception ex)
+ {
+ Log.Fatal(ex, "Tuitio API host terminated unexpectedly");
+ }
+ finally
+ {
+ Log.CloseAndFlush();
+ }
+ }
+ }
+}
diff --git a/IdentityServer.Api/Properties/launchSettings.json b/src/Tuitio/Properties/launchSettings.json
similarity index 87%
rename from IdentityServer.Api/Properties/launchSettings.json
rename to src/Tuitio/Properties/launchSettings.json
index a86dcb0..4ee55fd 100644
--- a/IdentityServer.Api/Properties/launchSettings.json
+++ b/src/Tuitio/Properties/launchSettings.json
@@ -1,6 +1,6 @@
{
"profiles": {
- "IdentityServer.Api": {
+ "Tuitio.Api": {
"commandName": "Project",
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
diff --git a/IdentityServer.Api/IdentityServer.Api.csproj b/src/Tuitio/Tuitio.csproj
similarity index 62%
rename from IdentityServer.Api/IdentityServer.Api.csproj
rename to src/Tuitio/Tuitio.csproj
index e76cdcf..1fed3de 100644
--- a/IdentityServer.Api/IdentityServer.Api.csproj
+++ b/src/Tuitio/Tuitio.csproj
@@ -1,30 +1,28 @@
- net5.0
+ net6.0
Linux
-
-
-
+
+
-
-
+
-
-
+
+
diff --git a/src/Tuitio/appsettings.json b/src/Tuitio/appsettings.json
new file mode 100644
index 0000000..b305db6
--- /dev/null
+++ b/src/Tuitio/appsettings.json
@@ -0,0 +1,32 @@
+{
+ "Urls": "http://*:5063",
+ "ConnectionStrings": {
+ "DatabaseConnection": "Server=######;Database=######;User Id=######;Password=######;MultipleActiveResultSets=true"
+ },
+ "Serilog": {
+ "MinimumLevel": {
+ "Default": "Information",
+ "Override": {
+ "Microsoft": "Information"
+ }
+ }
+ },
+ "Logs": {
+ "SqlServer": {
+ "Enabled": false,
+ "Connection": "Server=#########;Database=#########;User Id=#########;Password=#########;MultipleActiveResultSets=true"
+ },
+ "Seq": {
+ "Enabled": false,
+ "Url": "",
+ "ApiKey": ""
+ }
+ },
+ "AllowedHosts": "*",
+ "Restrictions": {
+ "MaxFailedLoginAttempts": 5
+ },
+ "Token": {
+ "ValidityInMinutes": 43800
+ }
+}