Compare commits
337 Commits
blazor-tes
...
master
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,319 @@
|
||||
```plantuml
|
||||
@startuml IEP
|
||||
|
||||
allowmixing
|
||||
skinparam classAttributeIconSize 9
|
||||
skinparam classBackgroundColor #123123
|
||||
skinparam classBorderColor #fff
|
||||
skinparam classArrowColor #123123
|
||||
skinparam classFontColor #white
|
||||
skinparam classFontName arial
|
||||
skinparam BackgroundColor #white
|
||||
|
||||
namespace Model #lightgrey {
|
||||
Class VocabularyList {
|
||||
- id : int
|
||||
- name : string
|
||||
- image : string
|
||||
- aut : int
|
||||
|
||||
+ VocabularyList(id : int, name : string, image : string, aut : sint)
|
||||
+ getId() : int
|
||||
+ getName() : string
|
||||
+ getImage() : string
|
||||
+ getAut() : int
|
||||
}
|
||||
|
||||
Class User {
|
||||
- id : int
|
||||
- password : string
|
||||
- email : string
|
||||
- name : string
|
||||
- surname : string
|
||||
- nickname : string
|
||||
- image : string
|
||||
- extraTime : bool
|
||||
- roles : array
|
||||
- group : int
|
||||
|
||||
+ User(id : int, password : string, email : string, name : string, surname : string, nickname : string, image : string, extratime : bool, roles : array, group : int)
|
||||
+ getId() : int
|
||||
+ getPassword() : string
|
||||
+ getEmail() : string
|
||||
+ getName() : string
|
||||
+ getSurname() : string
|
||||
+ getNickname() : string
|
||||
+ getImage() : string
|
||||
+ isExtratime() : bool
|
||||
+ getRoles() : array
|
||||
+ getGroup() : int
|
||||
}
|
||||
|
||||
Class Translation {
|
||||
- id : int
|
||||
- word1 : string
|
||||
- word2 : string
|
||||
- listVocab : int
|
||||
|
||||
+ Translation(id : int, word1 : string, word2 : string, listVocab : int)
|
||||
+ getId() : int
|
||||
+ getWord1() : string
|
||||
+ getWord2() : string
|
||||
+ getListVocab() : int
|
||||
}
|
||||
|
||||
Class Group {
|
||||
- id : string
|
||||
- num : int
|
||||
- year : int
|
||||
- sector : string
|
||||
|
||||
+ Group(id : int, num : int, year : int, sector : string)
|
||||
+ getId() : int
|
||||
+ getNum() : int
|
||||
+ getYear() : int
|
||||
+ getSector() : string
|
||||
}
|
||||
|
||||
Abstract Class AbsModel {
|
||||
+ connection(login : string, password : string) : void
|
||||
+ deconnection() : void
|
||||
+ checkLoginExist(login : string)
|
||||
+ {abstract} is(login : string, roles : array) : User
|
||||
}
|
||||
|
||||
Class MdlAdmin {
|
||||
+ getAllStudents() : array
|
||||
+ getAllUsers() : array
|
||||
+ getAllAdmins(): array
|
||||
+ getAllTeachers() : array
|
||||
+ getAllGroups() : array
|
||||
+ getUnassignedUsers() : array
|
||||
+ getUsersOfGroup(id : int) : array
|
||||
+ removeUser(id : int) : void
|
||||
+ addUserToGroup(user : int, group : int) : void
|
||||
+ removeUserFromGroup(id : int) : void
|
||||
+ addGroup(num : int, year : int, sector : string) : int
|
||||
+ removeGroup(id : int) : void
|
||||
+ is(login : string, roles : array) : User
|
||||
}
|
||||
|
||||
Class MdlStudent {
|
||||
+ getAll() : array
|
||||
+ getVocabByName(name : string) : array
|
||||
+ is(login : string, roles : array) : User
|
||||
}
|
||||
|
||||
Class MdlTeacher {
|
||||
+ getAll() : array
|
||||
+ getAllGroups() : array
|
||||
+ getAllStudent() : array
|
||||
+ getVocabByName(name : string) : array
|
||||
+ findByUser(id : int) : array
|
||||
+ findGroupVocab(vocab : int) : array
|
||||
+ findGroupNoVocab(vocab : int) : array
|
||||
+ findByIdVoc(id : int) : array
|
||||
+ addVocabToGroup(vocabID : int, groupID : int) : void
|
||||
+ removeVocabFromGroup(vocabID : int, groupID : int) : void
|
||||
+ addVocabList(userID : int, name : string, image : string, words : array) : void
|
||||
+ removeVocById(id : int) : void
|
||||
+ is(login : string, roles : array) : User
|
||||
}
|
||||
|
||||
Class MdlUser {
|
||||
+ modifyNickname(id : int, newNickname : string) : void
|
||||
+ modifyPassword(id : int, newPassword : string) : void
|
||||
+ getUserById(id : int) : User
|
||||
+ is(login : string, roles : array) : User
|
||||
}
|
||||
|
||||
MdlAdmin ---|> MdlUser
|
||||
MdlStudent --|> MdlUser
|
||||
MdlTeacher --|> MdlUser
|
||||
MdlUser --|> AbsModel
|
||||
|
||||
MdlAdmin .u..> Gateway.GroupGateway
|
||||
MdlAdmin .u..> Gateway.UserGateway
|
||||
|
||||
MdlStudent .do..> Gateway.UserGateway
|
||||
MdlStudent .do..> Gateway.VocabularyListGateway
|
||||
|
||||
MdlTeacher .left.> Gateway.UserGateway
|
||||
MdlTeacher .left> Gateway.GroupGateway
|
||||
MdlTeacher .left> Gateway.TranslationGateway
|
||||
MdlTeacher .left> Gateway.VocabularyListGateway
|
||||
|
||||
}
|
||||
|
||||
namespace Gateway #lightgrey {
|
||||
abstract Class AbsGateway {
|
||||
+ AbsGateway()
|
||||
+ {abstract} add(parameters: array) : int
|
||||
+ {abstract} remove(id: int) : void
|
||||
+ {abstract} findAll() : array
|
||||
+ {abstract} findById(id: int)
|
||||
}
|
||||
|
||||
Class UserGateway {
|
||||
- getRoles(id : int) : array
|
||||
|
||||
+ UserGateway()
|
||||
+ add(parameters: array) : int
|
||||
+ remove(id: int) : void
|
||||
+ findAll() : array
|
||||
+ findById(id: int) : User
|
||||
+ findAllAdmins() : array
|
||||
+ findAllTeachers() : array
|
||||
+ findAllStudents() : array
|
||||
+ findUserByEmail(email : string) : User
|
||||
+ findUserByName(name : string) : array
|
||||
+ findUserBySurname(surname : string) : array
|
||||
+ findUserByNickname(nickname : string) : array
|
||||
+ findUsersByGroup(id : int) : array
|
||||
+ findUnassignedUsers() : array
|
||||
+ login(login : string) : string
|
||||
+ modifyPassword(id : int, newPassword : string) : void
|
||||
+ modifyNickname(id : int, nickname : string) : void
|
||||
+ modifyImage(id : int, image : string) : void
|
||||
+ modifyGroup(id : int, newGroup : int) : void
|
||||
|
||||
}
|
||||
|
||||
class GroupGateway {
|
||||
+ GroupGateway()
|
||||
+ add(parameters: array) : int
|
||||
+ remove(id: int) : void
|
||||
+ findAll() : array
|
||||
+ findById(id: int) : Group
|
||||
+ findByNum (num: string): array
|
||||
+ findGroupVocab(vocab : int) : array
|
||||
+ findGroupNoVocab(vocab : int) : array
|
||||
+ addVocabToGroup(vocab : int, group : int) : void
|
||||
+ removeVocabFromGroup(vocab : int, group : int) : void
|
||||
+ modifyGroupById (id: int, num: int, year: int, sector: string): void
|
||||
|
||||
}
|
||||
|
||||
class TranslationGateway {
|
||||
- addWord(word: string): void
|
||||
|
||||
+ TranslationGateway()
|
||||
+ add(parameters: array) : int
|
||||
+ remove(id: int) : void
|
||||
+ findAll() : array
|
||||
+ findById(id: int) : Translation
|
||||
+ findByIdVoc(id: int): array
|
||||
}
|
||||
|
||||
Class VocabularyListGateway {
|
||||
+ VocabularyListGateway()
|
||||
+ add(parameters: array) : int
|
||||
+ remove(id: int) : void
|
||||
+ findAll() : array
|
||||
+ findById(id: int) : VocabularyList
|
||||
+ findByName(name : string) : array
|
||||
+ findByGroup(id : int) : array
|
||||
+ findByUser(id : int) : array
|
||||
+ findByName(name: string): array
|
||||
+ findByGroup(id: int): array
|
||||
+ modifVocabListById(id : int, name : string, img : string, aut : string) : void
|
||||
}
|
||||
|
||||
UserGateway -|> AbsGateway
|
||||
GroupGateway --|> AbsGateway
|
||||
TranslationGateway ---|> AbsGateway
|
||||
VocabularyListGateway ---|> AbsGateway
|
||||
AbsGateway *--- Config.Connection : #con : Connection
|
||||
UserGateway ..> Model.User
|
||||
GroupGateway ..> Model.Group
|
||||
TranslationGateway ..> Model.Translation
|
||||
VocabularyListGateway ..> Model.VocabularyList
|
||||
}
|
||||
|
||||
namespace Controller #lightgrey {
|
||||
class VisitorController {
|
||||
+ login() : void
|
||||
+ confirmLogin() : void
|
||||
+ disconnect() : void
|
||||
+ checkLoginExist(login : string) : bool
|
||||
+ memory(match : array) : void
|
||||
+ quiz(match : array) : void
|
||||
+ resultatsJeux(match : array) : void
|
||||
}
|
||||
|
||||
class UserController {
|
||||
+ showAccountInfos() : void
|
||||
+ modifyPassword() : void
|
||||
+ modifyNickname() : void
|
||||
+ {static} home() : void
|
||||
}
|
||||
|
||||
Class AdminController{
|
||||
+ showAllUsers() : void
|
||||
+ showAllAdmins() : void
|
||||
+ showAllTeachers() : void
|
||||
+ showAllStudents() : void
|
||||
+ showAllGroups() : void
|
||||
+ removeUser() : void
|
||||
+ showGroupDetails() : void
|
||||
+ removeUserFromGroup() : void
|
||||
+ removeGroup() : void
|
||||
+ addGroup() : void
|
||||
+ addUserToGroup() : void
|
||||
}
|
||||
|
||||
Class StudentController{
|
||||
+ ListVocChoice() : void
|
||||
+ gameChoice() : void
|
||||
+ getByName() : void
|
||||
}
|
||||
|
||||
Class TeacherController{
|
||||
+ affAllStudent() : void
|
||||
+ affAllVocab() : void
|
||||
+ getByName() : void
|
||||
+ DelById() : void
|
||||
+ getContent() : void
|
||||
+ addVocabToGroup() : void
|
||||
+ removeVocabFromGroup() : void
|
||||
+ showVocabListForm() : void
|
||||
+ addVocabList() : void
|
||||
}
|
||||
|
||||
Class FrontController {
|
||||
+ FrontController()
|
||||
}
|
||||
|
||||
AdminController --|> UserController
|
||||
TeacherController -left|> UserController
|
||||
StudentController --|> UserController
|
||||
UserController --|> VisitorController
|
||||
VisitorController ..> Config.Validation
|
||||
FrontController ..> VisitorController
|
||||
FrontController ..> UserController
|
||||
FrontController ..> Config.Validation
|
||||
FrontController ..> Model.MdlUser
|
||||
|
||||
StudentController ..> Model.MdlStudent
|
||||
TeacherController ..> Model.MdlTeacher
|
||||
AdminController ..> Model.MdlAdmin
|
||||
|
||||
}
|
||||
|
||||
namespace Config #lightgray{
|
||||
Class Connection {
|
||||
- stmt
|
||||
+ executeQuery(query : string, parameters : array) : bool
|
||||
+ getResult() : array
|
||||
}
|
||||
|
||||
Class Validation{
|
||||
+ {static} val_action(action) : string
|
||||
+ {static} val_password(value) : string
|
||||
+ {static} filter_int(value) : int
|
||||
+ {static} filter_str_simple(value) : string
|
||||
+ {static} filter_str_nospecialchar(value) : string
|
||||
}
|
||||
}
|
||||
|
||||
@enduml
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,30 @@
|
||||
**/.classpath
|
||||
**/.dockerignore
|
||||
**/.env
|
||||
**/.git
|
||||
**/.gitignore
|
||||
**/.project
|
||||
**/.settings
|
||||
**/.toolstarget
|
||||
**/.vs
|
||||
**/.vscode
|
||||
**/*.*proj.user
|
||||
**/*.dbmdl
|
||||
**/*.jfm
|
||||
**/azds.yaml
|
||||
**/bin
|
||||
**/charts
|
||||
**/docker-compose*
|
||||
**/Dockerfile*
|
||||
**/node_modules
|
||||
**/npm-debug.log
|
||||
**/obj
|
||||
**/secrets.dev.yaml
|
||||
**/values.dev.yaml
|
||||
LICENSE
|
||||
README.md
|
||||
!**/.gitignore
|
||||
!.git/HEAD
|
||||
!.git/config
|
||||
!.git/packed-refs
|
||||
!.git/refs/heads/**
|
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ActiveDebugProfile>https</ActiveDebugProfile>
|
||||
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,6 @@
|
||||
@API_HostAddress = http://localhost:5124
|
||||
|
||||
GET {{API_HostAddress}}/weatherforecast/
|
||||
Accept: application/json
|
||||
|
||||
###
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,30 @@
|
||||
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
|
||||
USER app
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
EXPOSE 8081
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
WORKDIR /src
|
||||
COPY ["API/API.csproj", "API/"]
|
||||
COPY ["DTOToEntity/DTOToEntity.csproj", "DTOToEntity/"]
|
||||
COPY ["DbContext/DbContextLib.csproj", "DbContext/"]
|
||||
COPY ["Entities/Entities.csproj", "Entities/"]
|
||||
COPY ["DTO/DTO.csproj", "DTO/"]
|
||||
COPY ["StubbedContext/StubbedContextLib.csproj", "StubbedContext/"]
|
||||
RUN dotnet restore "./API/./API.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/API"
|
||||
RUN dotnet build "./API.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||
|
||||
FROM build AS publish
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
RUN dotnet publish "./API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "API.dll"]
|
@ -0,0 +1,117 @@
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using StubbedContextLib;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.SqlServer;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Entities;
|
||||
using DTOToEntity;
|
||||
using DTO;
|
||||
using System;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using DbContextLib;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using System.Text;
|
||||
using Microsoft.OpenApi.Models;
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
// Add services to the container.
|
||||
|
||||
builder.Services.AddControllers();
|
||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||
builder.Services.AddEndpointsApiExplorer();
|
||||
builder.Services.AddSwaggerGen();
|
||||
|
||||
|
||||
builder.Services.AddDbContext<StubbedContext>(options =>
|
||||
{
|
||||
options.UseSqlServer(builder.Configuration.GetConnectionString("StubbedContext"));
|
||||
});
|
||||
|
||||
builder.Services.AddSwaggerGen(option =>
|
||||
{
|
||||
option.SwaggerDoc("v1", new OpenApiInfo { Title = "Test API", Version = "v1" });
|
||||
option.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
|
||||
{
|
||||
In = ParameterLocation.Header,
|
||||
Description = "Please enter a valid token",
|
||||
Name = "Authorization",
|
||||
Type = SecuritySchemeType.Http,
|
||||
BearerFormat = "JWT",
|
||||
Scheme = "Bearer"
|
||||
});
|
||||
option.AddSecurityRequirement(new OpenApiSecurityRequirement
|
||||
{
|
||||
{
|
||||
new OpenApiSecurityScheme
|
||||
{
|
||||
Reference = new OpenApiReference
|
||||
{
|
||||
Type=ReferenceType.SecurityScheme,
|
||||
Id="Bearer"
|
||||
}
|
||||
},
|
||||
new string[]{}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var validIssuer = builder.Configuration.GetValue<string>("JwtTokenSettings:ValidIssuer");
|
||||
var validAudience = builder.Configuration.GetValue<string>("JwtTokenSettings:ValidAudience");
|
||||
var symmetricSecurityKey = builder.Configuration.GetValue<string>("JwtTokenSettings:SymmetricSecurityKey");
|
||||
|
||||
builder.Services.AddAuthentication(options => {
|
||||
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
//options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
|
||||
})
|
||||
.AddJwtBearer(options =>
|
||||
{
|
||||
options.IncludeErrorDetails = true;
|
||||
options.TokenValidationParameters = new TokenValidationParameters()
|
||||
{
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = true,
|
||||
ValidateLifetime = true,
|
||||
ValidateIssuerSigningKey = true,
|
||||
ValidIssuer = validIssuer,
|
||||
ValidAudience = validAudience,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(
|
||||
Encoding.UTF8.GetBytes(symmetricSecurityKey)
|
||||
),
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
builder.Services.AddApiVersioning(o =>
|
||||
{
|
||||
o.DefaultApiVersion = new ApiVersion(1, 1);
|
||||
o.AssumeDefaultVersionWhenUnspecified = true;
|
||||
o.ReportApiVersions = true;
|
||||
});
|
||||
builder.Services.AddScoped<IGroupService, GroupService>();
|
||||
builder.Services.AddScoped<IService<LangueDTO>,LangueService>();
|
||||
builder.Services.AddScoped<IService<RoleDTO>,RoleService>();
|
||||
builder.Services.AddScoped<ITranslateService,TranslateService>();
|
||||
builder.Services.AddScoped<IUserService, UserService>();
|
||||
builder.Services.AddScoped<IVocabularyService, VocabularyService>();
|
||||
builder.Services.AddScoped<IVocabularyListService, VocabularyListService>();
|
||||
var app = builder.Build();
|
||||
// Configure the HTTP request pipeline.
|
||||
if (app.Environment.IsDevelopment())
|
||||
{
|
||||
app.UseSwagger();
|
||||
app.UseSwaggerUI();
|
||||
}
|
||||
|
||||
app.UseAuthentication();
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthorization();
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
app.Run();
|
@ -0,0 +1,52 @@
|
||||
{
|
||||
"profiles": {
|
||||
"http": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "http://localhost:5124"
|
||||
},
|
||||
"https": {
|
||||
"commandName": "Project",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
},
|
||||
"dotnetRunMessages": true,
|
||||
"applicationUrl": "https://localhost:7013;http://localhost:5124"
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"Docker": {
|
||||
"commandName": "Docker",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_HTTPS_PORTS": "8081",
|
||||
"ASPNETCORE_HTTP_PORTS": "8080"
|
||||
},
|
||||
"publishAllPorts": true,
|
||||
"useSSL": true
|
||||
}
|
||||
},
|
||||
"$schema": "http://json.schemastore.org/launchsettings.json",
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:32547",
|
||||
"sslPort": 44345
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
namespace API
|
||||
{
|
||||
public class WeatherForecast
|
||||
{
|
||||
public DateOnly Date { get; set; }
|
||||
|
||||
public int TemperatureC { get; set; }
|
||||
|
||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||
|
||||
public string? Summary { get; set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft.AspNetCore": "Warning"
|
||||
}
|
||||
},
|
||||
"JwtTokenSettings": {
|
||||
"ValidIssuer": "ExampleIssuer",
|
||||
"ValidAudience": "ValidAudience",
|
||||
"SymmetricSecurityKey": "fvh8456477hth44j6wfds98bq9hp8bqh9ubq9gjig3qr0[94vj5",
|
||||
"JwtRegisteredClaimNamesSub": "345h098bb8reberbwr4vvb8945"
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue