Initial commit - Auth.RCL
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Razor">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<SupportedPlatform Include="browser" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MudBlazor" Version="8.9.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="10.0.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.1" />
|
||||
<PackageReference Include="Blazored.LocalStorage" Version="4.5.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="10.0.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Localization" Version="10.0.1" />
|
||||
|
||||
|
||||
<!-- <PackageReference Include="SoloX.BlazorJsonLocalization" Version="3.0.0-alpha.2" /> -->
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="../../../../../Backend/SharedLogic/Generic/Generic.CL/Generic.CL.csproj" />
|
||||
<ProjectReference Include="../../../../../Backend/APIs/Auth/Auth.Contracts/Auth.Contracts.csproj" />
|
||||
<ProjectReference Include="../../../Layouts/LayoutLib/LayoutLib.RCL/LayoutLib.RCL.csproj" />
|
||||
<ProjectReference Include="../../../Generic/Common/Common.RCL/Common.RCL.csproj" />
|
||||
<ProjectReference Include="../../../Generic/Media/Media.RCL/Media.RCL.csproj" />
|
||||
|
||||
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!-- Embed default culture for instant loading -->
|
||||
<EmbeddedResource Include="*.json" />
|
||||
|
||||
<!-- Include wwwroot for HTTP-loaded cultures -->
|
||||
<!-- <Content Include="wwwroot\**\*" /> -->
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,3 @@
|
||||
<div class="my-component">
|
||||
This component is defined in the <strong>AuthLib</strong> library.
|
||||
</div>
|
||||
@@ -0,0 +1,6 @@
|
||||
.my-component {
|
||||
border: 2px dashed red;
|
||||
padding: 1em;
|
||||
margin: 1em 0;
|
||||
background-image: url('background.png');
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
@page "/user/basic-info"
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
<Dialog ShowDialog="showNameDialog" OnCancel="ToggleNameDialog" OnSubmit="ChangeName" TitleName="@("Change Name")">
|
||||
<div>
|
||||
TEST TEST TEST
|
||||
</div>
|
||||
</Dialog>
|
||||
@*
|
||||
<Dialog OnCancel="ToggleEmailDialog" OnSubmit="ChangeEmail" TitleName="Change Email" ></Dialog>
|
||||
|
||||
|
||||
<Dialog OnCancel="TogglePhoneNumberDialog" OnSubmit="ChangePhoneNumber" TitleName="Change Phone Number" ></Dialog>
|
||||
|
||||
|
||||
<Dialog OnCancel="TogglePassword" OnSubmit="ChangePassword" TitleName="Change Password" ></Dialog> *@
|
||||
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 p-20">
|
||||
@*
|
||||
<ToggleInput InputValue="userInfoUpdate.Name" OnSave="ChangeName" InputType="text" Label="Name"></ToggleInput>
|
||||
<ToggleInput InputValue="userInfoUpdate.Email" OnSave="ChangeEmail" InputType="email" Label="Email"></ToggleInput>
|
||||
<ToggleInput InputValue="userInfoUpdate.PhoneNumber" OnSave="ChangePhoneNumber" InputType="number" Label="Phone
|
||||
Number"></ToggleInput>
|
||||
<ToggleInput OnSave="ChangePassword" InputType="password" Label="Password"></ToggleInput> *@
|
||||
|
||||
<div class="flex flex-row justify-between">
|
||||
<label>Name:</label>
|
||||
<p>@user.Name</p>
|
||||
<button @onclick="ToggleNameDialog" class="btn btn-primary">Change</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-row justify-between">
|
||||
<label>Email:</label>
|
||||
<p>@user.Email</p>
|
||||
<button @onclick="ToggleEmailDialog" class="btn btn-primary">Change</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-row justify-between">
|
||||
<label>PhoneNumber:</label>
|
||||
<p>@user.PhoneNumber</p>
|
||||
<button @onclick="TogglePhoneNumberDialog" class="btn btn-primary">Change</button>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flex flex-row justify-between">
|
||||
<label>Password:</label>
|
||||
<p>***********</p>
|
||||
<button @onclick="TogglePasswordDialog" class="btn btn-primary">Change</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
UserVM user = new();
|
||||
|
||||
[CascadingParameter] public Task<AuthenticationState> authStateTask { get; set; }
|
||||
|
||||
bool showNameDialog = false;
|
||||
bool showEmailDialog = false;
|
||||
bool showPhoneNumberDialog = false;
|
||||
bool showPasswordDialog = false;
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
var userId = (await authStateTask).User.Claims.FirstOrDefault(x => x.Type == "id").Value;
|
||||
if (userId == null)
|
||||
nav.NavigateTo("/signin");
|
||||
|
||||
user = await userAPIConsumer.GetUser(userId);
|
||||
}
|
||||
|
||||
void ToggleNameDialog() => showNameDialog = !showNameDialog;
|
||||
|
||||
void ToggleEmailDialog() => showEmailDialog = !showEmailDialog;
|
||||
|
||||
void TogglePhoneNumberDialog() => showPhoneNumberDialog = !showPhoneNumberDialog;
|
||||
|
||||
void TogglePasswordDialog() => showPasswordDialog = !showPasswordDialog;
|
||||
|
||||
async Task ChangeName()
|
||||
{
|
||||
|
||||
ToggleNameDialog();
|
||||
}
|
||||
|
||||
async Task ChangeEmail()
|
||||
{
|
||||
|
||||
ToggleEmailDialog();
|
||||
}
|
||||
|
||||
async Task ChangePhoneNumber()
|
||||
{
|
||||
|
||||
TogglePhoneNumberDialog();
|
||||
}
|
||||
|
||||
async Task ChangePassword()
|
||||
{
|
||||
|
||||
TogglePasswordDialog();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<div>
|
||||
<h2>Write your new Email</h2>
|
||||
<input class="input input-primary"/>
|
||||
<button @onclick="Submit">change email</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
@code{
|
||||
|
||||
|
||||
async Task Submit()
|
||||
{
|
||||
//SendEmailConfirmationToken()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
@layout EmptyLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
|
||||
<PageTitle>Sign In</PageTitle>
|
||||
|
||||
|
||||
|
||||
|
||||
<EditForm Model="@tokenRequestModel" OnValidSubmit="@OnValidSignIn" class="text-gray-600 body-font">
|
||||
<DataAnnotationsValidator />
|
||||
<ValidationSummary />
|
||||
<div class="container px-5 py-24 mx-auto flex flex-wrap items-center">
|
||||
<div class="lg:w-3/5 md:w-1/2 md:pr-16 lg:pr-0 pr-0">
|
||||
<h1 class="title-font font-medium text-3xl text-gray-900">Slow-carb next level shoindcgoitch ethical
|
||||
authentic, poko scenester</h1>
|
||||
<p class="leading-relaxed mt-4">Poke slow-carb mixtape knausgaard, typewriter street art gentrify hammock
|
||||
starladder roathse. Craies vegan tousled etsy austin.</p>
|
||||
</div>
|
||||
<div class="lg:w-2/6 md:w-1/2 bg-gray-100 rounded-lg p-8 flex flex-col md:ml-auto w-full mt-10 md:mt-0">
|
||||
<h2 class="text-gray-900 text-lg font-medium title-font mb-5">Sign In</h2>
|
||||
|
||||
<div class="relative mb-4">
|
||||
<label for="email" class="leading-7 text-sm text-gray-600">Email</label>
|
||||
<InputText type="email" placeholder="Email" @bind-Value="tokenRequestModel.Email" id="email"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
</div>
|
||||
<div class="relative mb-4">
|
||||
<label for="Password" class="leading-7 text-sm text-gray-600">Password</label>
|
||||
<InputText type="password" placeholder="Password" @bind-Value="tokenRequestModel.Password" id="Password"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
</div>
|
||||
|
||||
<button type="submit"
|
||||
class="text-white mt-4 bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg">Sign
|
||||
In</button>
|
||||
<p class="text-xs text-red-500 mt-4">@errorMessage</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</EditForm>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public EventCallback CarryOnRequest { get; set; }
|
||||
|
||||
private TokenRequestModel tokenRequestModel = new();
|
||||
|
||||
private string errorMessage = "";
|
||||
|
||||
|
||||
[CascadingParameter] public Task<AuthenticationState> authStateTask { get; set; }
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
}
|
||||
|
||||
public async Task OnValidSignIn()
|
||||
{
|
||||
var isSuccessful = await userAPIConsumer.Login(tokenRequestModel);
|
||||
if (isSuccessful)
|
||||
{
|
||||
errorMessage = "Verifcation Email Sent to your Original Email.";
|
||||
errorMessage = "Verifcation Email Sent to your Original Email.";
|
||||
// TODO: Capture NewEmail from user input. Using placeholder for now.
|
||||
userAPIConsumer.SendChangeEmailToken(new RequestChangeEmail { NewEmail = "placeholder@example.com" });
|
||||
}
|
||||
else
|
||||
errorMessage = "Wrong Email or Password.";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Modal with confirm username and password ... calls a event call back that will carry on the request
|
||||
@@ -0,0 +1,47 @@
|
||||
@page "/forgotpassword"
|
||||
@* @using System.ComponentModel.DataAnnotations *@
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@layout EmptyLayout
|
||||
|
||||
<div class="container px-5 py-24 mx-auto flex flex-wrap items-center">
|
||||
|
||||
<div class="lg:w-2/6 md:w-1/2 bg-gray-100 rounded-lg p-8 flex flex-col mx-auto w-full mt-10 md:mt-0">
|
||||
<h2 class="text-gray-900 text-lg font-medium title-font mb-5">Reset your Password</h2>
|
||||
|
||||
|
||||
<div class="relative mb-4">
|
||||
<label for="email" class="leading-7 text-sm text-gray-600">Email</label>
|
||||
<input type="email" placeholder="Email" @bind="Email" id="email"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<button @onclick="ResetPassword" type="button"
|
||||
class="text-white mt-4 bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg">Reset
|
||||
Password</button>
|
||||
<p class='text-md text-center font-bold @(isSuccessful ? "text-green-500" : "text-red-500") mt-4'>@resultMessage
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
string resultMessage = "";
|
||||
bool isSuccessful = false;
|
||||
|
||||
|
||||
public string Email { get; set; }
|
||||
|
||||
async Task ResetPassword()
|
||||
{
|
||||
isSuccessful = await userAPIConsumer.RequestResetPassword(Email);
|
||||
if (isSuccessful)
|
||||
resultMessage = "Email Sent.";
|
||||
else
|
||||
resultMessage = "Error.";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
@page "/account/reset-password/{*token}"
|
||||
@layout EmptyLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
|
||||
|
||||
<EditForm EditContext="ec" OnValidSubmit="Reset" class="container px-5 py-24 mx-auto flex flex-wrap items-center">
|
||||
|
||||
<div class="lg:w-2/6 md:w-1/2 bg-gray-100 rounded-lg p-8 flex flex-col mx-auto w-full mt-10 md:mt-0">
|
||||
<h2 class="text-gray-900 text-lg font-medium title-font mb-5">Reset your Password</h2>
|
||||
|
||||
|
||||
<div class="relative mb-4">
|
||||
<label for="email" class="leading-7 text-sm text-gray-600">Email</label>
|
||||
<InputText type="email" placeholder="Email" @bind-Value="passwordResetModel.Email" id="email"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
|
||||
</div>
|
||||
|
||||
<div class="relative mb-4">
|
||||
<label for="password" class="leading-7 text-sm text-gray-600">Password</label>
|
||||
<InputText type="password" placeholder="Password" @bind-Value="passwordResetModel.Password" id="password"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<button type="submit"
|
||||
class="text-white mt-4 bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg">Reset
|
||||
Password</button>
|
||||
<p class='text-md text-center font-bold @(isSuccessful ? "text-green-500" : "text-red-500") mt-4'>@resultMessage
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</EditForm>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public string Token { get; set; }
|
||||
|
||||
PasswordResetModel passwordResetModel = new();
|
||||
@* string status = "Confirming..."; *@
|
||||
|
||||
string resultMessage = "";
|
||||
|
||||
bool isSuccessful = false;
|
||||
EditContext ec;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
ec = new EditContext(passwordResetModel);
|
||||
}
|
||||
|
||||
async Task Reset()
|
||||
{
|
||||
resultMessage = "";
|
||||
passwordResetModel.Token = Token;
|
||||
if (ec.Validate())
|
||||
{
|
||||
isSuccessful = await userAPIConsumer.ResetPassword(passwordResetModel);
|
||||
if (isSuccessful)
|
||||
resultMessage = "Password reset successful.";
|
||||
else
|
||||
resultMessage = "Error, Try Again later";
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
@page "/confirm-phonenumber/{phoneNumber}/{token}"
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
|
||||
|
||||
<h1>@message</h1>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public string Token { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public string PhoneNumber { get; set; }
|
||||
|
||||
string message = "";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var updatePhoneNumber = new UpdatePhoneNumber() { Token = Token, PhoneNumber = PhoneNumber };
|
||||
var isSuccess = await userAPIConsumer.UpdatePhoneNumber(updatePhoneNumber);
|
||||
if (isSuccess)
|
||||
message = $"Phone Number Changed to {PhoneNumber} Successfully.";
|
||||
else
|
||||
message = $"Server Error or Token Expired.";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
@page "/phone"
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
|
||||
|
||||
<div class="flex flex-col w-full h-full p-20">
|
||||
<input @bind="phoneNumber" class="input input-primary" />
|
||||
<button @onclick="Submit" class="btn btn-primary">Submit</button>
|
||||
<p class="text-red-500">@error</p>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
string phoneNumber = "";
|
||||
|
||||
string error = "";
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
async Task Submit()
|
||||
{
|
||||
@* var updatePhoneNumber = new UpdatePhoneNumber() { PhoneNumber= phoneNumber}; *@
|
||||
var isSuccess = await userAPIConsumer.SendPhoneNumberToken(phoneNumber);
|
||||
if (isSuccess)
|
||||
nav.NavigateTo("/profile");
|
||||
else
|
||||
error = "Error updating Phone Number.";
|
||||
}
|
||||
}
|
||||
Executable
+98
@@ -0,0 +1,98 @@
|
||||
@page "/email-confirmed"
|
||||
@layout EmptyLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
|
||||
<PageTitle>Email Confirmed</PageTitle>
|
||||
|
||||
|
||||
<h1>Email Confirmed</h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@*
|
||||
|
||||
|
||||
|
||||
<EditForm Model="@tokenRequestModel" OnValidSubmit="@OnValidSignIn" class="text-gray-600 body-font">
|
||||
<DataAnnotationsValidator />
|
||||
<ValidationSummary />
|
||||
<div class="container px-5 py-24 mx-auto flex flex-wrap items-center">
|
||||
<div class="lg:w-3/5 md:w-1/2 md:pr-16 lg:pr-0 pr-0">
|
||||
<h1 class="title-font font-medium text-3xl text-gray-900">Slow-carb next level shoindcgoitch ethical
|
||||
authentic, poko scenester</h1>
|
||||
<p class="leading-relaxed mt-4">Poke slow-carb mixtape knausgaard, typewriter street art gentrify hammock
|
||||
starladder roathse. Craies vegan tousled etsy austin.</p>
|
||||
</div>
|
||||
<div class="lg:w-2/6 md:w-1/2 bg-gray-100 rounded-lg p-8 flex flex-col md:ml-auto w-full mt-10 md:mt-0">
|
||||
<h2 class="text-gray-900 text-lg font-medium title-font mb-5">Sign In</h2>
|
||||
|
||||
<div class="relative mb-4">
|
||||
<label for="email" class="leading-7 text-sm text-gray-600">Email</label>
|
||||
<InputText type="email" placeholder="Email" @bind-Value="tokenRequestModel.Email" id="email"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200
|
||||
text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
</div>
|
||||
<div class="relative mb-4">
|
||||
<label for="Password" class="leading-7 text-sm text-gray-600">Password</label>
|
||||
<InputText type="password" placeholder="Password" @bind-Value="tokenRequestModel.Password" id="Password"
|
||||
class="w-full bg-white rounded border border-gray-300 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200
|
||||
text-base outline-none text-gray-700 py-1 px-3 leading-8 transition-colors duration-200 ease-in-out" />
|
||||
</div>
|
||||
|
||||
<button type="submit"
|
||||
class="text-white mt-4 bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg">Sign
|
||||
In</button>
|
||||
<p class="text-xs text-red-500 mt-4">@errorMessage</p>
|
||||
|
||||
<NavLink href="/ForgotPassword">Forgot Password?</NavLink>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</EditForm>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public string? Token { get; set; }
|
||||
|
||||
private TokenRequestModel tokenRequestModel = new();
|
||||
private string errorMessage = "";
|
||||
|
||||
public async Task OnValidSignIn()
|
||||
{
|
||||
var isSuccessful = await userAPIConsumer.Login(tokenRequestModel);
|
||||
if (!string.IsNullOrEmpty(Token))
|
||||
{
|
||||
if (isSuccessful)
|
||||
{
|
||||
var confirmSuccessful = await userAPIConsumer.ConfirmEmail(Token);
|
||||
if (confirmSuccessful)
|
||||
nav.NavigateTo("/");
|
||||
else
|
||||
{
|
||||
errorMessage = "Error, confirming email. try again later.";
|
||||
}
|
||||
}
|
||||
else
|
||||
errorMessage = "Wrong Email or Password.";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
errorMessage = result.Message;
|
||||
}
|
||||
|
||||
} *@
|
||||
@@ -0,0 +1,35 @@
|
||||
@page "/home2"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<LanguageSwitcher></LanguageSwitcher>
|
||||
<h1>@Localizer["Hello"]</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
<h1>Hello World</h1>
|
||||
|
||||
<MediaUploadContainer></MediaUploadContainer>
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
|
||||
}
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
@page "/resend"
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@layout EmptyLayout
|
||||
|
||||
<div class="container px-5 py-24 mx-auto flex flex-wrap items-center">
|
||||
|
||||
<div class="lg:w-2/6 md:w-1/2 bg-gray-100 rounded-lg p-8 flex flex-col w-full mt-10 md:mt-0">
|
||||
<h2 class="text-gray-900 text-lg font-medium title-font mb-5">Verify your Email</h2>
|
||||
|
||||
<p>Didn't recieve an email? press the resend email button</p>
|
||||
|
||||
|
||||
<button @onclick="ResendEmail" type="button"
|
||||
class="text-white mt-4 bg-indigo-500 border-0 py-2 px-8 focus:outline-none hover:bg-indigo-600 rounded text-lg">Resend
|
||||
Email</button>
|
||||
<p class='text-md font-bold @(isSuccessful ? "text-green-500" : "text-red-500") mt-4'>@resultMessage</p>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
string resultMessage = "";
|
||||
bool isSuccessful = false;
|
||||
|
||||
async Task ResendEmail()
|
||||
{
|
||||
resultMessage = "";
|
||||
isSuccessful = await userAPIConsumer.ResendConfirmation();
|
||||
if (isSuccessful)
|
||||
resultMessage = "Email Sent.";
|
||||
else
|
||||
resultMessage = "Error.";
|
||||
}
|
||||
|
||||
}
|
||||
Executable
+104
@@ -0,0 +1,104 @@
|
||||
@page "/SignIn"
|
||||
@page "/confirm-account/{*token}"
|
||||
@layout EmptyLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
|
||||
<PageTitle>Sign In</PageTitle>
|
||||
|
||||
|
||||
|
||||
|
||||
<EditForm Model="@tokenRequestModel" OnValidSubmit="@OnValidSignIn"
|
||||
class="flex justify-center items-center h-screen bg-base-200">
|
||||
<DataAnnotationsValidator />
|
||||
|
||||
<div class="card w-96 bg-base-100 shadow-xl">
|
||||
<div class="card-body">
|
||||
<h2 class="card-title text-2xl font-bold justify-center mb-6">Sign In</h2>
|
||||
|
||||
<div class="form-control w-full max-w-xs mx-auto">
|
||||
<label class="label">
|
||||
<span class="label-text">Email</span>
|
||||
</label>
|
||||
<InputText type="email" placeholder="email@example.com" @bind-Value="tokenRequestModel.Email"
|
||||
class="input input-bordered w-full max-w-xs" />
|
||||
</div>
|
||||
|
||||
<div class="form-control w-full max-w-xs mx-auto">
|
||||
<label class="label">
|
||||
<span class="label-text">Password</span>
|
||||
</label>
|
||||
<InputText type="password" placeholder="********" @bind-Value="tokenRequestModel.Password"
|
||||
class="input input-bordered w-full max-w-xs" />
|
||||
<label class="label">
|
||||
<a href="/ForgotPassword" class="label-text-alt link link-hover">Forgot Password?</a>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="card-actions justify-center mt-6">
|
||||
<button type="submit" class="btn btn-primary w-full max-w-xs">Sign In</button>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrEmpty(errorMessage))
|
||||
{
|
||||
<div class="alert alert-error mt-4">
|
||||
<span>@errorMessage</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public string? Token { get; set; }
|
||||
|
||||
private TokenRequestModel tokenRequestModel = new();
|
||||
private string errorMessage = "";
|
||||
|
||||
|
||||
[CascadingParameter] public Task<AuthenticationState> authStateTask { get; set; }
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var user = (await authStateTask).User;
|
||||
if (user != null)
|
||||
if (user.Identity.IsAuthenticated)
|
||||
nav.NavigateTo("/");
|
||||
}
|
||||
|
||||
public async Task OnValidSignIn()
|
||||
{
|
||||
var isSuccessful = await userAPIConsumer.Login(tokenRequestModel);
|
||||
if (isSuccessful)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(Token))
|
||||
{
|
||||
var confirmSuccessful = await userAPIConsumer.ConfirmEmail(Token);
|
||||
if (confirmSuccessful)
|
||||
nav.NavigateTo("/email-confirmed");
|
||||
else
|
||||
{
|
||||
errorMessage = "Error, confirming email. try again later.";
|
||||
}
|
||||
}
|
||||
else
|
||||
nav.NavigateTo("/");
|
||||
}
|
||||
else
|
||||
errorMessage = "Wrong Email or Password.";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@* errorMessage = result.Message; *@
|
||||
}
|
||||
|
||||
}
|
||||
Executable
+75
@@ -0,0 +1,75 @@
|
||||
@page "/signUp"
|
||||
@layout EmptyLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject NavigationManager nav
|
||||
|
||||
<PageTitle>Sign Up</PageTitle>
|
||||
|
||||
|
||||
<EditForm Model="@registerModel" OnValidSubmit="@OnValidSignUp"
|
||||
class="flex justify-center items-center py-10 min-h-screen bg-base-200">
|
||||
<DataAnnotationsValidator />
|
||||
|
||||
<div class="card w-96 bg-base-100 shadow-xl">
|
||||
<div class="card-body">
|
||||
<h2 class="card-title text-2xl font-bold justify-center mb-6">Sign Up</h2>
|
||||
|
||||
<div class="form-control w-full">
|
||||
<label class="label"><span class="label-text">Full Name</span></label>
|
||||
<InputText type="text" @bind-Value="registerModel.FullName" class="input input-bordered w-full" />
|
||||
</div>
|
||||
|
||||
<div class="form-control w-full">
|
||||
<label class="label"><span class="label-text">Email</span></label>
|
||||
<InputText type="email" @bind-Value="registerModel.Email" class="input input-bordered w-full" />
|
||||
</div>
|
||||
|
||||
<div class="form-control w-full">
|
||||
<label class="label"><span class="label-text">Password</span></label>
|
||||
<InputText type="password" @bind-Value="registerModel.Password" class="input input-bordered w-full" />
|
||||
</div>
|
||||
|
||||
<div class="form-control w-full">
|
||||
<label class="label"><span class="label-text">Confirm Password</span></label>
|
||||
<InputText type="password" @bind-Value="registerModel.ConfirmPassword"
|
||||
class="input input-bordered w-full" />
|
||||
</div>
|
||||
|
||||
<div class="card-actions justify-center mt-6">
|
||||
<button type="submit" class="btn btn-primary w-full">Sign Up</button>
|
||||
</div>
|
||||
|
||||
@if (!string.IsNullOrEmpty(errorMessage))
|
||||
{
|
||||
<div class="alert alert-error mt-4">
|
||||
<span>@errorMessage</span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</EditForm>
|
||||
|
||||
|
||||
@code {
|
||||
|
||||
private RegisterModel registerModel = new RegisterModel();
|
||||
private string errorMessage = "";
|
||||
|
||||
[CascadingParameter] public Task<AuthenticationState> authStateTask { get; set; }
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var user = (await authStateTask).User;
|
||||
if (user.Identity.IsAuthenticated)
|
||||
nav.NavigateTo("/");
|
||||
}
|
||||
|
||||
private async Task OnValidSignUp()
|
||||
{
|
||||
var result = await userAPIConsumer.Register(registerModel);
|
||||
if (result.IsSuccessful)
|
||||
nav.NavigateTo("SignIn");
|
||||
else
|
||||
errorMessage = result.Message;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<div class="modal-box">
|
||||
<h3 class="font-bold text-lg flex items-center gap-2">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-warning" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||
</svg>
|
||||
Add Role
|
||||
</h3>
|
||||
|
||||
<div class="py-4">
|
||||
<select @bind="SelectedValue" class="select select-bordered w-full">
|
||||
<option value="" disabled selected>Select a role</option>
|
||||
@foreach (var role in Roles)
|
||||
{
|
||||
<option value="@role">@role</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="modal-action">
|
||||
<button class="btn" @onclick="OnCancel">Cancel</button>
|
||||
<button class="btn btn-primary" @onclick="OnAddRole">Add Role</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public List<string> Roles { get; set; } = new();
|
||||
|
||||
public string SelectedValue { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnClose { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<string> OnConfirm { get; set; }
|
||||
|
||||
private async Task OnCancel() => await OnClose.InvokeAsync();
|
||||
|
||||
private async Task OnAddRole()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(SelectedValue))
|
||||
{
|
||||
await OnConfirm.InvokeAsync(SelectedValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
@inject RoleAPIConsumer roleAPIConsumer
|
||||
|
||||
<div class="flex flex-col w-full h-full gap-5">
|
||||
<select @bind="selectedRole" class="select select-bordered w-full">
|
||||
<option value="" disabled selected>Select Role</option>
|
||||
@foreach (var role in roles)
|
||||
{
|
||||
<option value="@role">@role</option>
|
||||
}
|
||||
</select>
|
||||
<button class="w-full btn btn-primary h-full" @onclick="() => AddRole()">أضف صلاحية</button>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
string selectedRole = "";
|
||||
|
||||
[Parameter] public UserVM UserVM { get; set; }
|
||||
[Parameter] public EventCallback AddMethod { get; set; }
|
||||
|
||||
List<string> roles = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
roles = Enum.GetNames<AppEnum.Roles>().Except(UserVM.Roles).ToList();
|
||||
}
|
||||
|
||||
async Task AddRole()
|
||||
{
|
||||
if (string.IsNullOrEmpty(selectedRole)) return;
|
||||
|
||||
var result = await roleAPIConsumer.AddUserToRole(UserVM.Id, selectedRole);
|
||||
if (result)
|
||||
{
|
||||
UserVM.Roles.Add(selectedRole);
|
||||
// Snackbar removed, rely on UI update
|
||||
await AddMethod.InvokeAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Snackbar removed
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
@page "/manage-UserRole"
|
||||
@layout AdminLayout
|
||||
@inject UserAPIConsumer userAPIConsumer
|
||||
@inject RoleAPIConsumer roleAPIConsumer
|
||||
@using Auth.Contracts
|
||||
|
||||
<div class="overflow-x-auto p-4">
|
||||
<table class="table table-zebra table-bordered w-full">
|
||||
<thead>
|
||||
<tr class="text-center bg-base-200">
|
||||
<th colspan="3" class="text-xl p-4">صلاحيات الوصول للتطبيق</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>الأسم</th>
|
||||
@* <th>الوظيفة</th> *@
|
||||
<th>الصلحيات</th>
|
||||
<th>أضف صلاحية</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if (users != null)
|
||||
{
|
||||
@foreach (var user in users)
|
||||
{
|
||||
<tr>
|
||||
<td>@user.Name</td>
|
||||
@* <td>@user.JobTitle</td> *@
|
||||
<td>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
@foreach (var role in user.Roles)
|
||||
{
|
||||
<div class="badge badge-success gap-2">
|
||||
<span>@role</span>
|
||||
<button class="btn btn-xs btn-circle btn-ghost" @onclick="() => RemoveRole(user, role)"
|
||||
type="button">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-3 w-3" fill="none" viewBox="0 0 24 24"
|
||||
stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M6 18L18 6M6 6l12 12" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<AddRolePopUp UserVM="user" AddMethod="AddRole"></AddRolePopUp>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@code {
|
||||
|
||||
List<UserVM> users = new List<UserVM>();
|
||||
List<string> roles = new List<string>();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
users = await userAPIConsumer.GetUsers();
|
||||
users ??= new List<UserVM>();
|
||||
roles = Enum.GetNames<AppEnum.Roles>().ToList();
|
||||
}
|
||||
|
||||
async Task AddRole()
|
||||
{
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
async Task RemoveRole(UserVM user, string role)
|
||||
{
|
||||
var result = await roleAPIConsumer.RemoveUserFromRole(user.Id, role);
|
||||
if (result)
|
||||
{
|
||||
user.Roles.Remove(role);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Error handling logic if needed
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
using Blazored.LocalStorage;
|
||||
using Auth.RCL.Services;
|
||||
|
||||
namespace Auth.RCL.Config
|
||||
{
|
||||
public static class AuthModuleExtensions
|
||||
{
|
||||
public static IServiceCollection AuthModuleServices(this IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<AuthenticationStateProvider, ApiAuthenticationStateProvider>();
|
||||
// services.AddScoped<IAuthService>(sp => (ApiAuthenticationStateProvider)sp.GetRequiredService<AuthenticationStateProvider>());
|
||||
services.AddScoped<RoleAPIConsumer>();
|
||||
services.AddScoped<UserAPIConsumer>();
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using Microsoft.JSInterop;
|
||||
|
||||
namespace AuthLib;
|
||||
|
||||
// This class provides an example of how JavaScript functionality can be wrapped
|
||||
// in a .NET class for easy consumption. The associated JavaScript module is
|
||||
// loaded on demand when first needed.
|
||||
//
|
||||
// This class can be registered as scoped DI service and then injected into Blazor
|
||||
// components for use.
|
||||
|
||||
public class ExampleJsInterop : IAsyncDisposable
|
||||
{
|
||||
private readonly Lazy<Task<IJSObjectReference>> moduleTask;
|
||||
|
||||
public ExampleJsInterop(IJSRuntime jsRuntime)
|
||||
{
|
||||
moduleTask = new (() => jsRuntime.InvokeAsync<IJSObjectReference>(
|
||||
"import", "./_content/AuthLib/exampleJsInterop.js").AsTask());
|
||||
}
|
||||
|
||||
public async ValueTask<string> Prompt(string message)
|
||||
{
|
||||
var module = await moduleTask.Value;
|
||||
return await module.InvokeAsync<string>("showPrompt", message);
|
||||
}
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
if (moduleTask.IsValueCreated)
|
||||
{
|
||||
var module = await moduleTask.Value;
|
||||
await module.DisposeAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+166
@@ -0,0 +1,166 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Security.Claims;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Auth.Contracts.DTOs.Auth;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
|
||||
namespace Auth.RCL.Services
|
||||
{
|
||||
public class ApiAuthenticationStateProvider : AuthenticationStateProvider
|
||||
{
|
||||
private readonly HttpClient _httpClient;
|
||||
private readonly ILocalStorageService _localStorage;
|
||||
|
||||
public ApiAuthenticationStateProvider(
|
||||
HttpClient httpClient,
|
||||
ILocalStorageService localStorage
|
||||
)
|
||||
{
|
||||
_httpClient = httpClient;
|
||||
_localStorage = localStorage;
|
||||
}
|
||||
|
||||
public override async Task<AuthenticationState> GetAuthenticationStateAsync()
|
||||
{
|
||||
var refreshToken = await _localStorage.GetItemAsync<string>("refreshToken");
|
||||
var accessToken = await _localStorage.GetItemAsync<string>("authToken");
|
||||
var expiryDate = await _localStorage.GetItemAsync<string>("expiryDate");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(accessToken))
|
||||
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
|
||||
|
||||
if (DateTime.Now.AddMinutes(4) > DateTime.Parse(expiryDate))
|
||||
{
|
||||
var tokenModel = JsonSerializer.Serialize(
|
||||
new TokenModel()
|
||||
{
|
||||
RefreshToken = refreshToken,
|
||||
AccessToken = accessToken,
|
||||
Expiry = new DateTime(),
|
||||
}
|
||||
);
|
||||
var response = await _httpClient.PostAsync(
|
||||
"auth/refresh",
|
||||
new StringContent(tokenModel, Encoding.UTF8, "application/json")
|
||||
);
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
_httpClient.DefaultRequestHeaders.Authorization = null;
|
||||
MarkUserAsLoggedOut();
|
||||
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
|
||||
}
|
||||
|
||||
var loginResult = JsonSerializer.Deserialize<LoginResult>(
|
||||
await response.Content.ReadAsStringAsync(),
|
||||
new JsonSerializerOptions { PropertyNameCaseInsensitive = true }
|
||||
);
|
||||
|
||||
await _localStorage.SetItemAsync("authToken", loginResult.AccessToken);
|
||||
await _localStorage.SetItemAsync("refreshToken", loginResult.RefreshToken);
|
||||
await _localStorage.SetItemAsync("expiryDate", loginResult.Expiry);
|
||||
|
||||
accessToken = loginResult.AccessToken;
|
||||
}
|
||||
|
||||
// if (string.IsNullOrWhiteSpace(savedToken) || DateTime.Now > DateTime.Parse(expiryDate))
|
||||
// {
|
||||
// return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
|
||||
// }
|
||||
|
||||
|
||||
_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
|
||||
"Bearer",
|
||||
accessToken
|
||||
);
|
||||
|
||||
var claims = ParseClaimsFromJwt(accessToken);
|
||||
if (claims is null)
|
||||
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity()));
|
||||
|
||||
return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity(claims, "jwt")));
|
||||
}
|
||||
|
||||
public async void MarkUserAsAuthenticated(string jwtToken)
|
||||
{
|
||||
var claims = ParseClaimsFromJwt(jwtToken);
|
||||
|
||||
var authenticatedUser = new ClaimsPrincipal(new ClaimsIdentity(claims, "apiauth"));
|
||||
var authState = Task.FromResult(new AuthenticationState(authenticatedUser));
|
||||
NotifyAuthenticationStateChanged(authState);
|
||||
|
||||
// var userId = authenticatedUser.Claims.FirstOrDefault(x => x.Type == "uid").Value;
|
||||
}
|
||||
|
||||
public async Task MarkUserAsLoggedOut()
|
||||
{
|
||||
var anonymousUser = new ClaimsPrincipal(new ClaimsIdentity());
|
||||
var authState = Task.FromResult(new AuthenticationState(anonymousUser));
|
||||
NotifyAuthenticationStateChanged(authState);
|
||||
|
||||
_httpClient.DefaultRequestHeaders.Authorization = null;
|
||||
}
|
||||
|
||||
private IEnumerable<Claim> ParseClaimsFromJwt(string jwt)
|
||||
{
|
||||
try
|
||||
{
|
||||
var claims = new List<Claim>();
|
||||
var payload = jwt.Split('.')[1];
|
||||
var jsonBytes = ParseBase64WithoutPadding(payload);
|
||||
var keyValuePairs = JsonSerializer.Deserialize<Dictionary<string, object>>(
|
||||
jsonBytes
|
||||
);
|
||||
|
||||
keyValuePairs.TryGetValue(ClaimTypes.Role, out object roles);
|
||||
|
||||
if (roles != null)
|
||||
{
|
||||
if (roles.ToString().Trim().StartsWith("["))
|
||||
{
|
||||
var parsedRoles = JsonSerializer.Deserialize<string[]>(roles.ToString());
|
||||
|
||||
foreach (var parsedRole in parsedRoles)
|
||||
{
|
||||
claims.Add(new Claim(ClaimTypes.Role, parsedRole));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
claims.Add(new Claim(ClaimTypes.Role, roles.ToString()));
|
||||
}
|
||||
|
||||
keyValuePairs.Remove(ClaimTypes.Role);
|
||||
}
|
||||
|
||||
claims.AddRange(
|
||||
keyValuePairs.Select(kvp => new Claim(kvp.Key, kvp.Value.ToString()))
|
||||
);
|
||||
|
||||
return claims;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private byte[] ParseBase64WithoutPadding(string base64)
|
||||
{
|
||||
switch (base64.Length % 4)
|
||||
{
|
||||
case 2:
|
||||
base64 += "==";
|
||||
break;
|
||||
case 3:
|
||||
base64 += "=";
|
||||
break;
|
||||
}
|
||||
return Convert.FromBase64String(base64);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Json;
|
||||
using System.Threading.Tasks;
|
||||
// using Microsoft.Extensions.DependencyInjection; // For AddHttpClient(), AddHttpClient<T>
|
||||
using System.Net.Http;
|
||||
using Auth.Contracts.DTOs.Users; // For RoleVM
|
||||
|
||||
namespace Auth.RCL.Services
|
||||
{
|
||||
public class RoleAPIConsumer
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
|
||||
// public RealEstateFilter RealEstateFilter { get; set; } = new();
|
||||
|
||||
public RoleAPIConsumer(IHttpClientFactory httpClientFactory)
|
||||
{
|
||||
this.client = httpClientFactory.CreateClient("Auth");
|
||||
|
||||
}
|
||||
|
||||
public async Task<bool> RemoveUserFromRole(string userId, string roleName)
|
||||
{
|
||||
try
|
||||
{
|
||||
// query = query + $"Language={appState.Language}";
|
||||
|
||||
// var response = await client.GetFromJsonAsync<List<Product>>($"{query}");
|
||||
var response = await client.DeleteAsync($"role-management/{roleName}/user/{userId}");
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
// _logger.LogError(ex, "GET Role failed for endpoint: {Endpoint}", endpoint);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> AddUserToRole(string userId, string roleName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PostAsync(
|
||||
$"role-management/{roleName}/user/{userId}",
|
||||
null
|
||||
);
|
||||
return response.IsSuccessStatusCode;
|
||||
// return await response.Content.ReadFromJsonAsync<RequestVM>();
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
// _logger.LogError(ex, "GET Role failed for endpoint: {Endpoint}", endpoint);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<RoleVM>> GetRoles()
|
||||
{
|
||||
try
|
||||
{
|
||||
return await client.GetFromJsonAsync<List<RoleVM>>("role-management/roles");
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> CreateRole(RoleVM role)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PostAsJsonAsync("role-management/roles", role);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> DeleteRole(string roleId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.DeleteAsync($"role-management/roles/{roleId}");
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<string>> GetRolePermissions(string roleId)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await client.GetFromJsonAsync<List<string>>($"role-management/roles/{roleId}/permissions");
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> AddPermissionToRole(string roleId, string permission)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PostAsJsonAsync($"role-management/roles/{roleId}/permissions", permission);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> RemovePermissionFromRole(string roleId, string permission)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Send as JSON body for DELETE request
|
||||
var request = new HttpRequestMessage(HttpMethod.Delete, $"role-management/roles/{roleId}/permissions")
|
||||
{
|
||||
Content = JsonContent.Create(permission)
|
||||
};
|
||||
var response = await client.SendAsync(request);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch (HttpRequestException)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Executable
+282
@@ -0,0 +1,282 @@
|
||||
using System.Net.Http.Headers;
|
||||
using System.Net.Http.Json;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using Auth.Contracts.DTOs.Auth;
|
||||
using Auth.Contracts.DTOs.Users;
|
||||
using Blazored.LocalStorage;
|
||||
using Microsoft.AspNetCore.Components.Authorization;
|
||||
|
||||
namespace Auth.RCL.Services
|
||||
{
|
||||
public class UserAPIConsumer
|
||||
{
|
||||
private readonly HttpClient client;
|
||||
private readonly AuthenticationStateProvider _authenticationStateProvider;
|
||||
private readonly ILocalStorageService _localStorage;
|
||||
|
||||
public UserAPIConsumer(
|
||||
IHttpClientFactory httpClientFactory,
|
||||
AuthenticationStateProvider authenticationStateProvider,
|
||||
ILocalStorageService localStorage
|
||||
)
|
||||
{
|
||||
this.client = httpClientFactory.CreateClient("Auth");
|
||||
|
||||
_authenticationStateProvider = authenticationStateProvider;
|
||||
_localStorage = localStorage;
|
||||
}
|
||||
|
||||
public async Task<(bool IsSuccessful, string Message)> Register(RegisterModel registerModel)
|
||||
{
|
||||
try
|
||||
{
|
||||
var registerAsJson = JsonSerializer.Serialize(registerModel);
|
||||
var response = await client.PostAsync(
|
||||
"auth/Register",
|
||||
new StringContent(registerAsJson, Encoding.UTF8, "application/json")
|
||||
);
|
||||
|
||||
return (response.IsSuccessStatusCode, await response.Content.ReadAsStringAsync());
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
// _logger.LogError(ex, "GET request failed for endpoint: {Endpoint}", endpoint);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task RefreshToken(TokenModel tokenModel) { }
|
||||
|
||||
public async Task<bool> Login(TokenRequestModel tokenRequestModel)
|
||||
{
|
||||
try
|
||||
{
|
||||
var loginAsJson = JsonSerializer.Serialize(tokenRequestModel);
|
||||
var response = await client.PostAsync(
|
||||
"auth/login",
|
||||
new StringContent(loginAsJson, Encoding.UTF8, "application/json")
|
||||
);
|
||||
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var loginResult = JsonSerializer.Deserialize<LoginResult>(
|
||||
await response.Content.ReadAsStringAsync(),
|
||||
new JsonSerializerOptions { PropertyNameCaseInsensitive = true }
|
||||
);
|
||||
await _localStorage.SetItemAsync("authToken", loginResult.AccessToken);
|
||||
await _localStorage.SetItemAsync("refreshToken", loginResult.RefreshToken);
|
||||
await _localStorage.SetItemAsync("expiryDate", loginResult.Expiry);
|
||||
|
||||
(
|
||||
(ApiAuthenticationStateProvider)_authenticationStateProvider
|
||||
).MarkUserAsAuthenticated(loginResult.AccessToken);
|
||||
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
|
||||
"bearer",
|
||||
loginResult.AccessToken
|
||||
);
|
||||
|
||||
loginResult.IsSuccessful = true;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
// _logger.LogError(ex, "GET request failed for endpoint: {Endpoint}", endpoint);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Logout()
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
await client.PostAsync("auth/logout", null);
|
||||
}
|
||||
catch { }
|
||||
|
||||
await _localStorage.RemoveItemAsync("authToken");
|
||||
await _localStorage.RemoveItemAsync("refreshToken");
|
||||
await _localStorage.RemoveItemAsync("expiryDate");
|
||||
|
||||
(
|
||||
(ApiAuthenticationStateProvider)_authenticationStateProvider
|
||||
).MarkUserAsLoggedOut();
|
||||
client.DefaultRequestHeaders.Authorization = null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<UserVM> GetUserInfoAsync(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var user = await client.GetFromJsonAsync<UserVM>($"user/{id}");
|
||||
return user;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> UpdateUserInfoAsync(UserVM user)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PutAsJsonAsync("user", user);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<List<UserVM>> GetUsers()
|
||||
{
|
||||
try
|
||||
{
|
||||
var users = await client.GetFromJsonAsync<List<UserVM>>($"users");
|
||||
return users;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<UserVM> GetUser(string id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var user = await client.GetFromJsonAsync<UserVM>($"user/{id}");
|
||||
return user;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> UpdateUser(UserInfoUpdate user)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PutAsJsonAsync("user", user);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> ResendConfirmation()
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.GetAsync("auth/resend-confirmation");
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> RequestResetPassword(string email)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.GetAsync($"auth/password-reset-token/{email}");
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> ConfirmEmail(string token)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PostAsJsonAsync(
|
||||
"auth/confirm-email",
|
||||
token,
|
||||
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }
|
||||
);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> ResetPassword(PasswordResetModel passwordResetModel)
|
||||
{
|
||||
try
|
||||
{
|
||||
var response = await client.PostAsJsonAsync(
|
||||
"auth/reset-password",
|
||||
passwordResetModel,
|
||||
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }
|
||||
);
|
||||
return response.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> SendPhoneNumberToken(string phoneNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await client.PostAsJsonAsync($"auth/phone-number", phoneNumber);
|
||||
return result.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> UpdatePhoneNumber(UpdatePhoneNumber updatePhoneNumber)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await client.PutAsJsonAsync($"auth/phone-number", updatePhoneNumber);
|
||||
return result.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> SendChangeEmailToken(RequestChangeEmail requestChangeEmail)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = await client.PostAsJsonAsync($"auth/change-email", requestChangeEmail);
|
||||
return result.IsSuccessStatusCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Generic.Contracts.Generics;
|
||||
|
||||
namespace Auth.RCL.Services.Utils
|
||||
{
|
||||
public class QueryBuilder
|
||||
{
|
||||
private readonly StringBuilder _builder;
|
||||
|
||||
public QueryBuilder()
|
||||
{
|
||||
_builder = new StringBuilder();
|
||||
}
|
||||
|
||||
public QueryBuilder AddBase(string baseString)
|
||||
{
|
||||
_builder.Insert(0, baseString);
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryBuilder AddPagination(Pagination pagination)
|
||||
{
|
||||
if (pagination != null)
|
||||
{
|
||||
AppendParameter("currentPage", pagination.CurrentPage.Value);
|
||||
AppendParameter("pageSize", pagination.PageSize.Value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryBuilder AddSort(SortModel sort)
|
||||
{
|
||||
if (sort != null && !string.IsNullOrEmpty(sort.SortBy))
|
||||
{
|
||||
AppendParameter("Column", sort.SortBy);
|
||||
AppendParameter("sortDirection", sort.SortDirection.ToString());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public QueryBuilder AddModelProperties<TModel>(TModel model)
|
||||
{
|
||||
if (model == null)
|
||||
return this;
|
||||
|
||||
var properties = typeof(TModel).GetProperties();
|
||||
foreach (var prop in properties)
|
||||
{
|
||||
var value = prop.GetValue(model)?.ToString();
|
||||
if (!string.IsNullOrEmpty(value))
|
||||
{
|
||||
AppendParameter(prop.Name.ToLower(), value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
private void AppendParameter(string key, string value)
|
||||
{
|
||||
if (_builder.Length > 0)
|
||||
_builder.Append('&');
|
||||
_builder.Append($"{Uri.EscapeDataString(key)}={Uri.EscapeDataString(value)}");
|
||||
}
|
||||
|
||||
private void AppendParameter(string key, int value)
|
||||
{
|
||||
AppendParameter(key, value.ToString());
|
||||
}
|
||||
|
||||
public override string ToString() => _builder.ToString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Auth.RCL;
|
||||
|
||||
public class SharedRes
|
||||
{
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Auth.Contracts.DTOs.Users
|
||||
@using Auth.Contracts.DTOs.Auth
|
||||
@using Auth.RCL.Config
|
||||
@using Auth.RCL.Services
|
||||
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using Microsoft.AspNetCore.Components.Authorization
|
||||
@using Microsoft.AspNetCore.Components.Forms;
|
||||
@using Auth.Contracts;
|
||||
@using Common
|
||||
@using LayoutLib
|
||||
@using Generic
|
||||
@* @using Generic.Media.Components *@
|
||||
@using System.Net.Http
|
||||
@using System.Net.Http.Json
|
||||
@using Microsoft.AspNetCore.Components.Forms
|
||||
@using Microsoft.AspNetCore.Components.Routing
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@using Microsoft.AspNetCore.Components.Web.Virtualization
|
||||
@* @using AuthModule.Components *@
|
||||
@using Auth.RCL
|
||||
@* @using SoloX.BlazorJsonLocalization *@
|
||||
@using Microsoft.Extensions.Localization
|
||||
@inject IStringLocalizer<Auth.RCL.SharedRes> Localizer
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,584 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v10.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v10.0": {
|
||||
"Auth.RCL/1.0.0": {
|
||||
"dependencies": {
|
||||
"Auth.Contracts": "1.0.0",
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Common.RCL": "1.0.0",
|
||||
"Generic.CL": "1.0.0",
|
||||
"LayoutLib.RCL": "1.0.0",
|
||||
"Media.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Http": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"runtime": {
|
||||
"Auth.RCL.dll": {}
|
||||
}
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Blazored.LocalStorage.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Metadata": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Authorization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Authorization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.Extensions.Validation": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Forms.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Forms": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1",
|
||||
"Microsoft.JSInterop": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Web.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Metadata.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "10.0.1",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.Binder.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Diagnostics.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Http/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics": "10.0.1",
|
||||
"Microsoft.Extensions.Logging": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Http.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Localization.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Localization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Localization.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Configuration.Binder": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Validation/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Validation.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.JSInterop/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.JSInterop.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/MudBlazor.dll": {
|
||||
"assemblyVersion": "8.9.0.0",
|
||||
"fileVersion": "8.9.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"runtime": {
|
||||
"Auth.Contracts.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Common.RCL/1.0.0": {
|
||||
"dependencies": {
|
||||
"Generic.CL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Common.RCL.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Generic.CL/1.0.0": {
|
||||
"runtime": {
|
||||
"Generic.CL.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"LayoutLib.RCL/1.0.0": {
|
||||
"dependencies": {
|
||||
"Common.RCL": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"runtime": {
|
||||
"LayoutLib.RCL.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Media.RCL/1.0.0": {
|
||||
"dependencies": {
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Http": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Media.RCL.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Auth.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
|
||||
"path": "blazored.localstorage/4.5.0",
|
||||
"hashPath": "blazored.localstorage.4.5.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Y9QE0gH4Q4cR7ZRToFju47c1MoeqxaLHdpzOviqD2TmnGGAeDMT9AV56j2BOVm5CsJAVyI/USxLYrkk2NVinZA==",
|
||||
"path": "microsoft.aspnetcore.authorization/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.authorization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-SbABcQ7soM9jC/HvPKrg/smQxsMD2gW9iHBRFtBiYTMSs5Vqh7+i47BTOe3OM3IGzly2FiOmeNHJhMYK7YFGWA==",
|
||||
"path": "microsoft.aspnetcore.components/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Authorization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ahez1F0EfsPqIT/X/TcdJCDYjVACHJwIPgZSof33wqLXaENUJNDnzphkmXOiBY1tvok/ZIUVEpeFLWdkLh0IyA==",
|
||||
"path": "microsoft.aspnetcore.components.authorization/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.authorization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-aWUpLOz749gwMMaKe81tet+INC8nfskbauF2VO5Qr3lspj/l8S24zNLr95Bl8EwAizvBCNqwb8fPFU1dnn3WbA==",
|
||||
"path": "microsoft.aspnetcore.components.forms/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.forms.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-hX74ijqAiUfIo6WpvLWignGYp7tkrRR3KRVBErwFSAcsiHeaCxGM81fYRXd9rf+gkFUNoKvcSxYyVZc2vFJVXg==",
|
||||
"path": "microsoft.aspnetcore.components.web/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.web.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6JrG03xROuR4mQIHGcT8OnaKVBoPLLbto5RicKQIUV3JIU7cZYKIWDAnk0SQcl7ziQr6R327D6QBOo+PbYnnrw==",
|
||||
"path": "microsoft.aspnetcore.metadata/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.metadata.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-njoRekyMIK+smav8B6KL2YgIfUtlsRNuT7wvurpLW+m/hoRKVnoELk2YxnUnWRGScCd1rukLMxShwLqEOKowDg==",
|
||||
"path": "microsoft.extensions.configuration/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kPlU11hql+L9RjrN2N9/0GcRcRcZrNFlLLjadasFWeBORT6pL6OE+RYRk90GGCyVGSxTK+e1/f3dsMj5zpFFiQ==",
|
||||
"path": "microsoft.extensions.configuration.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Lp4CZIuTVXtlvkAnTq6QvMSW7+H62gX2cU2vdFxHQUxvrWTpi7LwYI3X+YAyIS0r12/p7gaosco7efIxL4yFNw==",
|
||||
"path": "microsoft.extensions.configuration.binder/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.binder.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-zerXV0GAR9LCSXoSIApbWn+Dq1/T+6vbXMHGduq1LoVQRHT0BXsGQEau0jeLUBUcsoF/NaUT8ADPu8b+eNcIyg==",
|
||||
"path": "microsoft.extensions.dependencyinjection/10.0.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-oIy8fQxxbUsSrrOvgBqlVgOeCtDmrcynnTG+FQufcUWBrwyPfwlUkCDB2vaiBeYPyT+20u9/HeuHeBf+H4F/8g==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YaocqxscJLxLit0F5yq2XyB+9C7rSRfeTL7MJIl7XwaOoUO3i0EqfO2kmtjiRduYWw7yjcSINEApYZbzjau2gQ==",
|
||||
"path": "microsoft.extensions.diagnostics/10.0.1",
|
||||
"hashPath": "microsoft.extensions.diagnostics.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-QMoMrkNpnQym5mpfdxfxpRDuqLpsOuztguFvzH9p+Ex+do+uLFoi7UkAsBO4e9/tNR3eMFraFf2fOAi2cp3jjA==",
|
||||
"path": "microsoft.extensions.diagnostics.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.diagnostics.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Http/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZXJup9ReE1Ot3M8jqcw1b/lnc8USxyYS3cyLsssU39u04TES9JNGviWUGIvP3K7mMU3TF7kQl2aS0SmVwegflw==",
|
||||
"path": "microsoft.extensions.http/10.0.1",
|
||||
"hashPath": "microsoft.extensions.http.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-yJBI3IRm9uTRu7cPc7i90/8+CuiiJJ5M4khj6iWQcYnq6VrG+H2U5GzpRLtkVCsgxc1LjtkNMEbSDatfBA+z5g==",
|
||||
"path": "microsoft.extensions.localization/10.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-TQSQWF+iZdtGNgPiu7gKUqrTEeRD/mhk7KeYiuEwmTUPbawsYfPSNzSvOOeueJ0nU1697X8HZ2vCp2ByHNHkZg==",
|
||||
"path": "microsoft.extensions.localization.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9ItMpMLFZFJFqCuHLLbR3LiA4ahA8dMtYuXpXl2YamSDWZhYS9BruPprkftY0tYi2bQ0slNrixdFm+4kpz1g5w==",
|
||||
"path": "microsoft.extensions.logging/10.0.1",
|
||||
"hashPath": "microsoft.extensions.logging.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YkmyiPIWAXVb+lPIrM0LE5bbtLOJkCiRTFiHpkVOvhI7uTvCfoOHLEN0LcsY56GpSD7NqX3gJNpsaDe87/B3zg==",
|
||||
"path": "microsoft.extensions.logging.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-G6VVwywpJI4XIobetGHwg7wDOYC2L2XBYdtskxLaKF/Ynb5QBwLl7Q//wxAR2aVCLkMpoQrjSP9VoORkyddsNQ==",
|
||||
"path": "microsoft.extensions.options/10.0.1",
|
||||
"hashPath": "microsoft.extensions.options.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pL78/Im7O3WmxHzlKUsWTYchKL881udU7E26gCD3T0+/tPhWVfjPwMzfN/MRKU7aoFYcOiqcG2k1QTlH5woWow==",
|
||||
"path": "microsoft.extensions.options.configurationextensions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.options.configurationextensions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-DO8XrJkp5x4PddDuc/CH37yDBCs9BYN6ijlKyR3vMb55BP1Vwh90vOX8bNfnKxr5B2qEI3D8bvbY1fFbDveDHQ==",
|
||||
"path": "microsoft.extensions.primitives/10.0.1",
|
||||
"hashPath": "microsoft.extensions.primitives.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Validation/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5bcu9zWhgY8AZUN1ERNH0BQKFh10xlx4UrCh+0cDn7wB01QkrK4S6Jh45fCgEqmWJWVGqBS2g8MN0Lu/99Zgdg==",
|
||||
"path": "microsoft.extensions.validation/10.0.1",
|
||||
"hashPath": "microsoft.extensions.validation.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.JSInterop/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pTfoYBjs7HKmTEk9cNWcSySdTKT8USjviLgmMaSs/YA0+oONufKy9hqqZ5EE4CNy9y24SDDc9lerXfV7aiVfWA==",
|
||||
"path": "microsoft.jsinterop/10.0.1",
|
||||
"hashPath": "microsoft.jsinterop.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KdjXMXiSvl6uNr+S2YDhGI1aX/TULMQejQSniMlp6QTss35NKFrJyrMAmN082HNvOObuKdnTtLpntJ7rM5Op/A==",
|
||||
"path": "mudblazor/8.9.0",
|
||||
"hashPath": "mudblazor.8.9.0.nupkg.sha512"
|
||||
},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Common.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Generic.CL/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"LayoutLib.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Media.RCL/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,583 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v10.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v10.0": {
|
||||
"AuthModule/1.0.0": {
|
||||
"dependencies": {
|
||||
"Auth.Contracts": "1.0.0",
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Common": "1.0.0",
|
||||
"Generic": "1.0.0",
|
||||
"LayoutLib": "1.0.0",
|
||||
"Media": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Http": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"AuthModule.dll": {}
|
||||
}
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Blazored.LocalStorage.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Metadata": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Authorization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Authorization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.Extensions.Validation": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Forms.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Forms": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1",
|
||||
"Microsoft.JSInterop": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Components.Web.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.AspNetCore.Metadata.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "10.0.1",
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Configuration.Binder.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Diagnostics.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Http/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Diagnostics": "10.0.1",
|
||||
"Microsoft.Extensions.Logging": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Http.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Localization.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Localization.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Localization.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "10.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Configuration.Binder": "10.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1",
|
||||
"Microsoft.Extensions.Primitives": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Validation/10.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.1",
|
||||
"Microsoft.Extensions.Options": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.Extensions.Validation.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.JSInterop/10.0.1": {
|
||||
"runtime": {
|
||||
"lib/net10.0/Microsoft.JSInterop.dll": {
|
||||
"assemblyVersion": "10.0.0.0",
|
||||
"fileVersion": "10.0.125.57005"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/MudBlazor.dll": {
|
||||
"assemblyVersion": "8.9.0.0",
|
||||
"fileVersion": "8.9.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"runtime": {
|
||||
"Auth.Contracts.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Common/1.0.0": {
|
||||
"dependencies": {
|
||||
"Generic": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Common.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Generic/1.0.0": {
|
||||
"runtime": {
|
||||
"Generic.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"LayoutLib/1.0.0": {
|
||||
"dependencies": {
|
||||
"Common": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"runtime": {
|
||||
"LayoutLib.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Media/1.0.0": {
|
||||
"dependencies": {
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "10.0.1",
|
||||
"Microsoft.AspNetCore.Components.Web": "10.0.1",
|
||||
"Microsoft.Extensions.Http": "10.0.1",
|
||||
"Microsoft.Extensions.Localization": "10.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Media.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"AuthModule/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
|
||||
"path": "blazored.localstorage/4.5.0",
|
||||
"hashPath": "blazored.localstorage.4.5.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Y9QE0gH4Q4cR7ZRToFju47c1MoeqxaLHdpzOviqD2TmnGGAeDMT9AV56j2BOVm5CsJAVyI/USxLYrkk2NVinZA==",
|
||||
"path": "microsoft.aspnetcore.authorization/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.authorization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-SbABcQ7soM9jC/HvPKrg/smQxsMD2gW9iHBRFtBiYTMSs5Vqh7+i47BTOe3OM3IGzly2FiOmeNHJhMYK7YFGWA==",
|
||||
"path": "microsoft.aspnetcore.components/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Authorization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ahez1F0EfsPqIT/X/TcdJCDYjVACHJwIPgZSof33wqLXaENUJNDnzphkmXOiBY1tvok/ZIUVEpeFLWdkLh0IyA==",
|
||||
"path": "microsoft.aspnetcore.components.authorization/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.authorization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-aWUpLOz749gwMMaKe81tet+INC8nfskbauF2VO5Qr3lspj/l8S24zNLr95Bl8EwAizvBCNqwb8fPFU1dnn3WbA==",
|
||||
"path": "microsoft.aspnetcore.components.forms/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.forms.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-hX74ijqAiUfIo6WpvLWignGYp7tkrRR3KRVBErwFSAcsiHeaCxGM81fYRXd9rf+gkFUNoKvcSxYyVZc2vFJVXg==",
|
||||
"path": "microsoft.aspnetcore.components.web/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.components.web.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6JrG03xROuR4mQIHGcT8OnaKVBoPLLbto5RicKQIUV3JIU7cZYKIWDAnk0SQcl7ziQr6R327D6QBOo+PbYnnrw==",
|
||||
"path": "microsoft.aspnetcore.metadata/10.0.1",
|
||||
"hashPath": "microsoft.aspnetcore.metadata.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-njoRekyMIK+smav8B6KL2YgIfUtlsRNuT7wvurpLW+m/hoRKVnoELk2YxnUnWRGScCd1rukLMxShwLqEOKowDg==",
|
||||
"path": "microsoft.extensions.configuration/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-kPlU11hql+L9RjrN2N9/0GcRcRcZrNFlLLjadasFWeBORT6pL6OE+RYRk90GGCyVGSxTK+e1/f3dsMj5zpFFiQ==",
|
||||
"path": "microsoft.extensions.configuration.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Lp4CZIuTVXtlvkAnTq6QvMSW7+H62gX2cU2vdFxHQUxvrWTpi7LwYI3X+YAyIS0r12/p7gaosco7efIxL4yFNw==",
|
||||
"path": "microsoft.extensions.configuration.binder/10.0.1",
|
||||
"hashPath": "microsoft.extensions.configuration.binder.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-zerXV0GAR9LCSXoSIApbWn+Dq1/T+6vbXMHGduq1LoVQRHT0BXsGQEau0jeLUBUcsoF/NaUT8ADPu8b+eNcIyg==",
|
||||
"path": "microsoft.extensions.dependencyinjection/10.0.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-oIy8fQxxbUsSrrOvgBqlVgOeCtDmrcynnTG+FQufcUWBrwyPfwlUkCDB2vaiBeYPyT+20u9/HeuHeBf+H4F/8g==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YaocqxscJLxLit0F5yq2XyB+9C7rSRfeTL7MJIl7XwaOoUO3i0EqfO2kmtjiRduYWw7yjcSINEApYZbzjau2gQ==",
|
||||
"path": "microsoft.extensions.diagnostics/10.0.1",
|
||||
"hashPath": "microsoft.extensions.diagnostics.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-QMoMrkNpnQym5mpfdxfxpRDuqLpsOuztguFvzH9p+Ex+do+uLFoi7UkAsBO4e9/tNR3eMFraFf2fOAi2cp3jjA==",
|
||||
"path": "microsoft.extensions.diagnostics.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.diagnostics.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Http/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ZXJup9ReE1Ot3M8jqcw1b/lnc8USxyYS3cyLsssU39u04TES9JNGviWUGIvP3K7mMU3TF7kQl2aS0SmVwegflw==",
|
||||
"path": "microsoft.extensions.http/10.0.1",
|
||||
"hashPath": "microsoft.extensions.http.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-yJBI3IRm9uTRu7cPc7i90/8+CuiiJJ5M4khj6iWQcYnq6VrG+H2U5GzpRLtkVCsgxc1LjtkNMEbSDatfBA+z5g==",
|
||||
"path": "microsoft.extensions.localization/10.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-TQSQWF+iZdtGNgPiu7gKUqrTEeRD/mhk7KeYiuEwmTUPbawsYfPSNzSvOOeueJ0nU1697X8HZ2vCp2ByHNHkZg==",
|
||||
"path": "microsoft.extensions.localization.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9ItMpMLFZFJFqCuHLLbR3LiA4ahA8dMtYuXpXl2YamSDWZhYS9BruPprkftY0tYi2bQ0slNrixdFm+4kpz1g5w==",
|
||||
"path": "microsoft.extensions.logging/10.0.1",
|
||||
"hashPath": "microsoft.extensions.logging.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YkmyiPIWAXVb+lPIrM0LE5bbtLOJkCiRTFiHpkVOvhI7uTvCfoOHLEN0LcsY56GpSD7NqX3gJNpsaDe87/B3zg==",
|
||||
"path": "microsoft.extensions.logging.abstractions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-G6VVwywpJI4XIobetGHwg7wDOYC2L2XBYdtskxLaKF/Ynb5QBwLl7Q//wxAR2aVCLkMpoQrjSP9VoORkyddsNQ==",
|
||||
"path": "microsoft.extensions.options/10.0.1",
|
||||
"hashPath": "microsoft.extensions.options.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pL78/Im7O3WmxHzlKUsWTYchKL881udU7E26gCD3T0+/tPhWVfjPwMzfN/MRKU7aoFYcOiqcG2k1QTlH5woWow==",
|
||||
"path": "microsoft.extensions.options.configurationextensions/10.0.1",
|
||||
"hashPath": "microsoft.extensions.options.configurationextensions.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-DO8XrJkp5x4PddDuc/CH37yDBCs9BYN6ijlKyR3vMb55BP1Vwh90vOX8bNfnKxr5B2qEI3D8bvbY1fFbDveDHQ==",
|
||||
"path": "microsoft.extensions.primitives/10.0.1",
|
||||
"hashPath": "microsoft.extensions.primitives.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Validation/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-5bcu9zWhgY8AZUN1ERNH0BQKFh10xlx4UrCh+0cDn7wB01QkrK4S6Jh45fCgEqmWJWVGqBS2g8MN0Lu/99Zgdg==",
|
||||
"path": "microsoft.extensions.validation/10.0.1",
|
||||
"hashPath": "microsoft.extensions.validation.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.JSInterop/10.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pTfoYBjs7HKmTEk9cNWcSySdTKT8USjviLgmMaSs/YA0+oONufKy9hqqZ5EE4CNy9y24SDDc9lerXfV7aiVfWA==",
|
||||
"path": "microsoft.jsinterop/10.0.1",
|
||||
"hashPath": "microsoft.jsinterop.10.0.1.nupkg.sha512"
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KdjXMXiSvl6uNr+S2YDhGI1aX/TULMQejQSniMlp6QTss35NKFrJyrMAmN082HNvOObuKdnTtLpntJ7rM5Op/A==",
|
||||
"path": "mudblazor/8.9.0",
|
||||
"hashPath": "mudblazor.8.9.0.nupkg.sha512"
|
||||
},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Common/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Generic/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"LayoutLib/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Media/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/obj/Debug/net10.0/scopedcss/bundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/obj/Debug/net10.0/compressed/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"Common.RCL.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"Common.RCL.styles.css"},"Patterns":null},"Common.RCL.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"fy9rjyaakk-{0}-dph6jvottp-dph6jvottp.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"fiwgk79u47-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"32onbuj1wh-{0}-vnhftjewbd-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net10.0/scopedcss/bundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net10.0/compressed/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"Common.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"Common.styles.css"},"Patterns":null},"Common.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"8adx25x7bv-{0}-dyev8wf6eo-dyev8wf6eo.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"2lk3dd1lz9-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"ywk08q3juw-{0}-vnhftjewbd-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/LayoutLib.RCL/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/LayoutLib.RCL/obj/Debug/net10.0/compressed/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/LayoutLib.RCL/obj/Debug/net10.0/scopedcss/bundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/obj/Debug/net10.0/scopedcss/projectbundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/Common.RCL/obj/Debug/net10.0/compressed/","/home/yla/.nuget/packages/mudblazor/8.9.0/staticwebassets/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"ly0x8gpdve-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"LayoutLib.RCL.styles.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"LayoutLib.RCL.styles.css"},"Patterns":null},"LayoutLib.RCL.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"44umfahe6v-{0}-4uc3imhjqu-4uc3imhjqu.gz"},"Patterns":null},"resources":{"Children":{"SharedRes.ar.json":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"resources/SharedRes.ar.json"},"Patterns":null},"SharedRes.ar.json.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"4s4ng6c1jl-{0}-w52k902j3l-w52k902j3l.gz"},"Patterns":null},"SharedRes.en.json":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"resources/SharedRes.en.json"},"Patterns":null},"SharedRes.en.json.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"1d086a33fb-{0}-z8qc8wrh10-z8qc8wrh10.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"_content":{"Children":{"Common.RCL":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"background.png"},"Patterns":null},"Common.RCL.dph6jvottp.bundle.scp.css":{"Children":null,"Asset":{"ContentRootIndex":4,"SubPath":"Common.RCL.bundle.scp.css"},"Patterns":null},"Common.RCL.dph6jvottp.bundle.scp.css.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"nyiqsnbdqh-{0}-dph6jvottp-dph6jvottp.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"fiwgk79u47-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"32onbuj1wh-{0}-vnhftjewbd-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":3,"Pattern":"**","Depth":2}]},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/obj/Debug/net10.0/compressed/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/obj/Debug/net10.0/scopedcss/bundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net10.0/scopedcss/projectbundle/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net10.0/compressed/","/home/yla/.nuget/packages/mudblazor/8.9.0/staticwebassets/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"j230ay6ibu-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"LayoutLib.styles.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"LayoutLib.styles.css"},"Patterns":null},"LayoutLib.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"o5dp2pr57p-{0}-5phnxoj3fu-5phnxoj3fu.gz"},"Patterns":null},"resources":{"Children":{"SharedRes.ar.json":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"resources/SharedRes.ar.json"},"Patterns":null},"SharedRes.ar.json.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"rx6wnqzng0-{0}-w52k902j3l-w52k902j3l.gz"},"Patterns":null},"SharedRes.en.json":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"resources/SharedRes.en.json"},"Patterns":null},"SharedRes.en.json.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"zamg5qeycn-{0}-z8qc8wrh10-z8qc8wrh10.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"_content":{"Children":{"Common":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"background.png"},"Patterns":null},"Common.dyev8wf6eo.bundle.scp.css":{"Children":null,"Asset":{"ContentRootIndex":4,"SubPath":"Common.bundle.scp.css"},"Patterns":null},"Common.dyev8wf6eo.bundle.scp.css.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"4dziwjilcl-{0}-dyev8wf6eo-dyev8wf6eo.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"2lk3dd1lz9-{0}-luzdqbu196-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"ywk08q3juw-{0}-vnhftjewbd-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":3,"Pattern":"**","Depth":2}]},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.js"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/Media.RCL/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/Media.RCL/obj/Debug/net10.0/compressed/"],"Root":{"Children":{"css":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"w5z14dlnee-{0}-ozxrxjrq84-ozxrxjrq84.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"crop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/crop.js"},"Patterns":null},"crop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"hk7nq8n70x-{0}-rzaytjouo0-rzaytjouo0.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"c4qv7zag90-{0}-llc9n82qda-llc9n82qda.gz"},"Patterns":null},"mediaInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/mediaInterop.js"},"Patterns":null},"mediaInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"8rzz1ly4wd-{0}-j3t2utpur3-j3t2utpur3.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"nsvlrsxof5-{0}-tef8z25zm7-tef8z25zm7.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"ke9t4lehyl-{0}-9ydfkw1ttr-9ydfkw1ttr.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/wwwroot/","/mnt/data/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/obj/Debug/net10.0/compressed/"],"Root":{"Children":{"css":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"63e88vs3br-{0}-ozxrxjrq84-ozxrxjrq84.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"crop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/crop.js"},"Patterns":null},"crop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"lps60iqv38-{0}-rzaytjouo0-rzaytjouo0.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"srub7l4ycb-{0}-llc9n82qda-llc9n82qda.gz"},"Patterns":null},"mediaInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/mediaInterop.js"},"Patterns":null},"mediaInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"do8do2nz96-{0}-j3t2utpur3-j3t2utpur3.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0m7r05w73h-{0}-tef8z25zm7-tef8z25zm7.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"xgz1hv2puc-{0}-9ydfkw1ttr-9ydfkw1ttr.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,642 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v9.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v9.0": {
|
||||
"AuthModule/1.0.0": {
|
||||
"dependencies": {
|
||||
"Auth.Contracts": "1.0.0",
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Common": "1.0.0",
|
||||
"Generic": "1.0.0",
|
||||
"LayoutLib": "1.0.0",
|
||||
"Media": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5",
|
||||
"Microsoft.Extensions.Http": "9.0.0",
|
||||
"Microsoft.Extensions.Localization": "9.0.1",
|
||||
"SoloX.BlazorJsonLocalization": "3.0.0-alpha.2"
|
||||
},
|
||||
"runtime": {
|
||||
"AuthModule.dll": {}
|
||||
},
|
||||
"resources": {
|
||||
"en-US/AuthModule.resources.dll": {
|
||||
"locale": "en-US"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net8.0/Blazored.LocalStorage.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Metadata": "9.0.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Authorization.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components.Analyzers": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Components.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Analyzers/9.0.5": {},
|
||||
"Microsoft.AspNetCore.Components.Authorization/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Authorization": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Components.Authorization.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Components.Forms.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components.Forms": "9.0.5",
|
||||
"Microsoft.Extensions.DependencyInjection": "9.0.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.5",
|
||||
"Microsoft.JSInterop": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Components.Web.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/9.0.5": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.AspNetCore.Metadata.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0",
|
||||
"Microsoft.Extensions.Primitives": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Configuration.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.21509"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.5": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.21509"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration": "9.0.0",
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0",
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Diagnostics.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Embedded/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.FileProviders.Embedded.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52903"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Http/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Diagnostics": "9.0.0",
|
||||
"Microsoft.Extensions.Logging": "9.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Http.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization/9.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Localization.Abstractions": "9.0.1",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Localization.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.124.61009"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/9.0.1": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Localization.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.124.61009"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "9.0.5",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.21509"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/9.0.5": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.21509"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Configuration.Abstractions": "9.0.0",
|
||||
"Microsoft.Extensions.Configuration.Binder": "9.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.5",
|
||||
"Microsoft.Extensions.Options": "9.0.5",
|
||||
"Microsoft.Extensions.Primitives": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.24.52809"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/9.0.5": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.21509"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.JSInterop/9.0.5": {
|
||||
"runtime": {
|
||||
"lib/net9.0/Microsoft.JSInterop.dll": {
|
||||
"assemblyVersion": "9.0.0.0",
|
||||
"fileVersion": "9.0.525.22904"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5",
|
||||
"Microsoft.Extensions.Localization": "9.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/MudBlazor.dll": {
|
||||
"assemblyVersion": "8.9.0.0",
|
||||
"fileVersion": "8.9.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"SoloX.BlazorJsonLocalization/3.0.0-alpha.2": {
|
||||
"dependencies": {
|
||||
"Microsoft.AspNetCore.Components": "9.0.5",
|
||||
"Microsoft.Extensions.FileProviders.Embedded": "9.0.0",
|
||||
"Microsoft.Extensions.Localization": "9.0.1",
|
||||
"Microsoft.Extensions.Logging": "9.0.0",
|
||||
"System.Text.Json": "9.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net9.0/SoloX.BlazorJsonLocalization.dll": {
|
||||
"assemblyVersion": "3.0.0.0",
|
||||
"fileVersion": "3.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Text.Json/9.0.0": {},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"runtime": {
|
||||
"Auth.Contracts.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Common/1.0.0": {
|
||||
"dependencies": {
|
||||
"Generic": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5"
|
||||
},
|
||||
"runtime": {
|
||||
"Common.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Generic/1.0.0": {
|
||||
"runtime": {
|
||||
"Generic.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"LayoutLib/1.0.0": {
|
||||
"dependencies": {
|
||||
"Common": "1.0.0",
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5",
|
||||
"MudBlazor": "8.9.0"
|
||||
},
|
||||
"runtime": {
|
||||
"LayoutLib.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Media/1.0.0": {
|
||||
"dependencies": {
|
||||
"Blazored.LocalStorage": "4.5.0",
|
||||
"Microsoft.AspNetCore.Components.Authorization": "9.0.5",
|
||||
"Microsoft.AspNetCore.Components.Web": "9.0.5",
|
||||
"Microsoft.Extensions.Http": "9.0.0",
|
||||
"Microsoft.Extensions.Localization": "9.0.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Media.dll": {
|
||||
"assemblyVersion": "1.0.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"AuthModule/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Blazored.LocalStorage/4.5.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6nZuJwA7zNIKx83IsObiHXZb09ponJOpCClU3en+hI8ZFvrOKXeOw+H7TegQZQrvdR1n9fkrVkEBQZg8vx6ZTw==",
|
||||
"path": "blazored.localstorage/4.5.0",
|
||||
"hashPath": "blazored.localstorage.4.5.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Authorization/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HPd+7PG+nMZSP13bTJuM5+q0vdzoBtjoBUMP9iuUGwG/kFHkeBOZ9QrZuSHHGmz/IgYdLbqbdJGEykSI5biIPw==",
|
||||
"path": "microsoft.aspnetcore.authorization/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.authorization.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-qwA9bx7nWayh1ogWe1H13vyGL64pNjHrukHmnZ9WZbQPtHeY9QTuXkvF/Uue0tzGbxChBf9v2LH5+KeVaRJIqw==",
|
||||
"path": "microsoft.aspnetcore.components/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.components.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Analyzers/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-u9dQP0/bjkTVHFHVBV+8TYpBVerjbFfvD3nwwOfaoJ8VmyCHoBFbD8m4nxV+rfu+jVLe2FQF4skjHZLIjjFbyQ==",
|
||||
"path": "microsoft.aspnetcore.components.analyzers/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.components.analyzers.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Authorization/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-amVsHIy/+712NIC246Hwtha2GFRVxAwEl5REhNSpgY++aRAKRU6S0x3xrJT8/kU9tfNpXjHbMd3xMedqBb5iJA==",
|
||||
"path": "microsoft.aspnetcore.components.authorization/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.components.authorization.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Forms/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KsAPGDQIa3SpP9yaIDrlETHpqprtmbbotdbGfGJ9aVvn/vi72cCTUVzpWOXIXgstVCb0ZQ940o/wfHKxBZEQMg==",
|
||||
"path": "microsoft.aspnetcore.components.forms/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.components.forms.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Components.Web/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-llh2dh9rR9JcnAMqvbijc9BzEnVhloQwKF8Kvfw73N2tJMnUJoxF3C9Ln1sao+nkZo3IpUuUu3k2czLOpS3NRQ==",
|
||||
"path": "microsoft.aspnetcore.components.web/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.components.web.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.AspNetCore.Metadata/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-E4lbYlraZfZLvWgliUEtrqKt42++Yh9mpGKLyGHPGo1FpbZrXF/x+fOg5dbe22bnuosgWn3cj30566XKdwiodw==",
|
||||
"path": "microsoft.aspnetcore.metadata/9.0.5",
|
||||
"hashPath": "microsoft.aspnetcore.metadata.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-YIMO9T3JL8MeEXgVozKt2v79hquo/EFtnY0vgxmLnUvk1Rei/halI7kOWZL2RBeV9FMGzgM9LZA8CVaNwFMaNA==",
|
||||
"path": "microsoft.extensions.configuration/9.0.0",
|
||||
"hashPath": "microsoft.extensions.configuration.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-lqvd7W3FGKUO1+ZoUEMaZ5XDJeWvjpy2/M/ptCGz3tXLD4HWVaSzjufsAsjemasBEg+2SxXVtYVvGt5r2nKDlg==",
|
||||
"path": "microsoft.extensions.configuration.abstractions/9.0.0",
|
||||
"hashPath": "microsoft.extensions.configuration.abstractions.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Binder/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-RiScL99DcyngY9zJA2ROrri7Br8tn5N4hP4YNvGdTN/bvg1A3dwvDOxHnNZ3Im7x2SJ5i4LkX1uPiR/MfSFBLQ==",
|
||||
"path": "microsoft.extensions.configuration.binder/9.0.0",
|
||||
"hashPath": "microsoft.extensions.configuration.binder.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-N1Mn0T/tUBPoLL+Fzsp+VCEtneUhhxc1//Dx3BeuQ8AX+XrMlYCfnp2zgpEXnTCB7053CLdiqVWPZ7mEX6MPjg==",
|
||||
"path": "microsoft.extensions.dependencyinjection/9.0.5",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-cjnRtsEAzU73aN6W7vkWy8Phj5t3Xm78HSqgrbh/O4Q9SK/yN73wZVa21QQY6amSLQRQ/M8N+koGnY6PuvKQsw==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.5",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-0CF9ZrNw5RAlRfbZuVIvzzhP8QeWqHiUmMBU/2H7Nmit8/vwP3/SbHeEctth7D4Gz2fBnEbokPc1NU8/j/1ZLw==",
|
||||
"path": "microsoft.extensions.diagnostics/9.0.0",
|
||||
"hashPath": "microsoft.extensions.diagnostics.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1K8P7XzuzX8W8pmXcZjcrqS6x5eSSdvhQohmcpgiQNY/HlDAlnrhR9dvlURfFz428A+RTCJpUyB+aKTA6AgVcQ==",
|
||||
"path": "microsoft.extensions.diagnostics.abstractions/9.0.0",
|
||||
"hashPath": "microsoft.extensions.diagnostics.abstractions.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==",
|
||||
"path": "microsoft.extensions.fileproviders.abstractions/9.0.0",
|
||||
"hashPath": "microsoft.extensions.fileproviders.abstractions.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Embedded/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-6Ev1goLIvggLF6uCs6oZvdr9JM+2b1Zj+4FLdBWNW5iw3tm2BymVIb0yMsjnQTBWL7YUmqVWH3u45hSqOfvuqg==",
|
||||
"path": "microsoft.extensions.fileproviders.embedded/9.0.0",
|
||||
"hashPath": "microsoft.extensions.fileproviders.embedded.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Http/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-DqI4q54U4hH7bIAq9M5a/hl5Odr/KBAoaZ0dcT4OgutD8dook34CbkvAfAIzkMVjYXiL+E5ul9etwwqiX4PHGw==",
|
||||
"path": "microsoft.extensions.http/9.0.0",
|
||||
"hashPath": "microsoft.extensions.http.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-UgvX4Yb2T3tEsKT30ktZr0H7kTRPapCgEH0bdTwxiEGSdA39/hAQMvvb+vgHpqmevDU5+puyI9ujRkmmbF946w==",
|
||||
"path": "microsoft.extensions.localization/9.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Localization.Abstractions/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-CABog43lyaZQMjmlktuImCy6zmAzRBaXqN81uPaMQjlp//ISDVYItZPh6KWpWRF4MY/B67X5oDc3JTUpfdocZw==",
|
||||
"path": "microsoft.extensions.localization.abstractions/9.0.1",
|
||||
"hashPath": "microsoft.extensions.localization.abstractions.9.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==",
|
||||
"path": "microsoft.extensions.logging/9.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pP1PADCrIxMYJXxFmTVbAgEU7GVpjK5i0/tyfU9DiE0oXQy3JWQaOVgCkrCiePLgS8b5sghM3Fau3EeHiVWbCg==",
|
||||
"path": "microsoft.extensions.logging.abstractions/9.0.5",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-vPdJQU8YLOUSSK8NL0RmwcXJr2E0w8xH559PGQl4JYsglgilZr9LZnqV2zdgk+XR05+kuvhBEZKoDVd46o7NqA==",
|
||||
"path": "microsoft.extensions.options/9.0.5",
|
||||
"hashPath": "microsoft.extensions.options.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ob3FXsXkcSMQmGZi7qP07EQ39kZpSBlTcAZLbJLdI4FIf0Jug8biv2HTavWmnTirchctPlq9bl/26CXtQRguzA==",
|
||||
"path": "microsoft.extensions.options.configurationextensions/9.0.0",
|
||||
"hashPath": "microsoft.extensions.options.configurationextensions.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-b4OAv1qE1C9aM+ShWJu3rlo/WjDwa/I30aIPXqDWSKXTtKl1Wwh6BZn+glH5HndGVVn3C6ZAPQj5nv7/7HJNBQ==",
|
||||
"path": "microsoft.extensions.primitives/9.0.5",
|
||||
"hashPath": "microsoft.extensions.primitives.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.JSInterop/9.0.5": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ji4fQKbUUZiq3lmzVBMvp15VgBtEyfR51NrmEjo6qnD97Jf1R6C6QkSMjwUO8bw5NZIDRtmPCYurypB3W5AMEg==",
|
||||
"path": "microsoft.jsinterop/9.0.5",
|
||||
"hashPath": "microsoft.jsinterop.9.0.5.nupkg.sha512"
|
||||
},
|
||||
"MudBlazor/8.9.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-KdjXMXiSvl6uNr+S2YDhGI1aX/TULMQejQSniMlp6QTss35NKFrJyrMAmN082HNvOObuKdnTtLpntJ7rM5Op/A==",
|
||||
"path": "mudblazor/8.9.0",
|
||||
"hashPath": "mudblazor.8.9.0.nupkg.sha512"
|
||||
},
|
||||
"SoloX.BlazorJsonLocalization/3.0.0-alpha.2": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-PsVAw8qo/gukhGTyG8HdwpFqcNkYcxJBV0pjmexwOSsGfyXzxhvbS6PJvVekP3RfeBu7KcK+q6jZJ616PU9Cgg==",
|
||||
"path": "solox.blazorjsonlocalization/3.0.0-alpha.2",
|
||||
"hashPath": "solox.blazorjsonlocalization.3.0.0-alpha.2.nupkg.sha512"
|
||||
},
|
||||
"System.Text.Json/9.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==",
|
||||
"path": "system.text.json/9.0.0",
|
||||
"hashPath": "system.text.json.9.0.0.nupkg.sha512"
|
||||
},
|
||||
"Auth.Contracts/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Common/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Generic/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"LayoutLib/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Media/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/wwwroot/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net9.0/scopedcss/bundle/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net9.0/compressed/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"Common.styles.css":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"Common.styles.css"},"Patterns":null},"Common.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"eonzp9tba4-dyev8wf6eo.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"azr3gilc9r-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"uhkfeye1o1-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/wwwroot/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/obj/Debug/net9.0/compressed/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Layouts/LayoutLib/obj/Debug/net9.0/scopedcss/bundle/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/wwwroot/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net9.0/scopedcss/projectbundle/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Common/obj/Debug/net9.0/compressed/","/home/yla/.nuget/packages/mudblazor/8.9.0/staticwebassets/"],"Root":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"background.png"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"8pznqeuxgm-luzdqbu196.gz"},"Patterns":null},"LayoutLib.styles.css":{"Children":null,"Asset":{"ContentRootIndex":2,"SubPath":"LayoutLib.styles.css"},"Patterns":null},"LayoutLib.styles.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"9yjcmi6iat-5phnxoj3fu.gz"},"Patterns":null},"_content":{"Children":{"Common":{"Children":{"background.png":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"background.png"},"Patterns":null},"Common.dyev8wf6eo.bundle.scp.css":{"Children":null,"Asset":{"ContentRootIndex":4,"SubPath":"Common.bundle.scp.css"},"Patterns":null},"Common.dyev8wf6eo.bundle.scp.css.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"qc5h9nywsh-dyev8wf6eo.gz"},"Patterns":null},"exampleJsInterop.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"exampleJsInterop.js"},"Patterns":null},"exampleJsInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"azr3gilc9r-luzdqbu196.gz"},"Patterns":null},"css":{"Children":{"carousal.js":{"Children":null,"Asset":{"ContentRootIndex":3,"SubPath":"css/carousal.js"},"Patterns":null},"carousal.js.gz":{"Children":null,"Asset":{"ContentRootIndex":5,"SubPath":"uhkfeye1o1-vnhftjewbd.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":3,"Pattern":"**","Depth":2}]},"MudBlazor":{"Children":{"MudBlazor.min.css":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.css"},"Patterns":null},"MudBlazor.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"tzxjg6is5z-sowobu9fea.gz"},"Patterns":null},"MudBlazor.min.js":{"Children":null,"Asset":{"ContentRootIndex":6,"SubPath":"MudBlazor.min.js"},"Patterns":null},"MudBlazor.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"0wz98yz2xy-b8x8f7e52z.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"ContentRoots":["/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/wwwroot/","/mnt/Dataa/Work/Programming/MainProgram/Frontend/Libs/Generic/Media/obj/Debug/net9.0/compressed/"],"Root":{"Children":{"css":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"css/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"cfog6n5tcn-ozxrxjrq84.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"js":{"Children":{"crop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/crop.js"},"Patterns":null},"crop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"6475xpiqob-rzaytjouo0.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"a1l3n5r079-llc9n82qda.gz"},"Patterns":null},"mediaInterop.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"js/mediaInterop.js"},"Patterns":null},"mediaInterop.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"e9z9tclwgg-j3t2utpur3.gz"},"Patterns":null}},"Asset":null,"Patterns":null},"lib":{"Children":{"cropper.min.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.css"},"Patterns":null},"cropper.min.css.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"ozu905yipp-tef8z25zm7.gz"},"Patterns":null},"cropper.min.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"lib/cropper.min.js"},"Patterns":null},"cropper.min.js.gz":{"Children":null,"Asset":{"ContentRootIndex":1,"SubPath":"dqwik5h0u9-9ydfkw1ttr.gz"},"Patterns":null}},"Asset":null,"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"Hello": "سلام سلام سلام"
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"Hello": "سلام سلام سلام"
|
||||
}
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/yla/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/yla/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/yla/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)mudblazor/8.9.0/buildTransitive/MudBlazor.props" Condition="Exists('$(NuGetPackageRoot)mudblazor/8.9.0/buildTransitive/MudBlazor.props')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.1/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.1/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/10.0.1/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/10.0.1/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)mudblazor/8.9.0/build/MudBlazor.targets" Condition="Exists('$(NuGetPackageRoot)mudblazor/8.9.0/build/MudBlazor.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/yla/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/yla/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">7.0.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/yla/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)mudblazor/8.9.0/buildTransitive/MudBlazor.props" Condition="Exists('$(NuGetPackageRoot)mudblazor/8.9.0/buildTransitive/MudBlazor.props')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Options.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.1/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.configuration.binder/10.0.1/buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/10.0.1/buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/10.0.1/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.aspnetcore.components.analyzers/10.0.1/buildTransitive/netstandard2.0/Microsoft.AspNetCore.Components.Analyzers.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
|
||||
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Auth.RCL")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+206dfeabd74212fb6442b2ac195b5904b0472cb7")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Auth.RCL")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Auth.RCL")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user