Merge branch 'dev' into feature/feature-management-module

pull/1660/head
Mehmet Erim 6 years ago committed by GitHub
commit 4906363ff6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -34,26 +34,32 @@ Příklad:
abp new Acme.BookStore
````
* Acme.BookStore je tady název řešení.
* `Acme.BookStore` je tady název řešení.
* Běžná konvence je nazvat řešení stylem *VaseSpolecnost.VasProjekt*. Nicméně můžete použít i jiné pojmenování jako *VasProjekt* (jednostupňový jmenný prostor) nebo *VaseSpolecnost.VasProjekt.VasModul* (třístupňový jmenný prostor).
#### Možnosti
* `--template` nebo `-t`: Určuje název šablony. Výchozí šablona je `mvc`. Dostupné šablony:
* `mvc` (výchozí): ASP.NET Core [MVC aplikační šablona](Startup-Templates/Mvc.md). Dodatečné možnosti:
* `--database-provider` nebo `-d`: Určuje poskytovatele databáze. Vychozí poskytovatel je `ef`. Dostupní poskytovatelé:
* `--template` nebo `-t`: Určuje název šablony. Výchozí šablona je `app`, která generuje webovou aplikaci. Dostupné šablony:
* `app` (výchozí): [Aplikační šablona](Startup-Templates/Application.md). Dodatečné možnosti:
* `--ui` nebo `-u`: Určuje UI framework. Výchozí framework je `mvc`. Dostupné frameworky:
* `mvc`: ASP.NET Core MVC. Pro tuto šablonu jsou dostupné dodatečné možnosti:
* `--tiered`: Vytvoří stupňovité řešení, kde jsou vrstvy Web a Http API fyzicky odděleny. Pokud není uvedeno, tak vytvoří vrstvené řešení, které je méně složité a vhodné pro většinu scénářů.
* `angular`: Angular. Pro tuto šablonu jsou dostupné dodatečné možnosti:
* `--separate-identity-server`: Oddělí identity server aplikaci od API host aplikace. Pokud není uvedeno, bude na straně serveru jediný koncový bod.
* `--database-provider` nebo `-d`: Určuje poskytovatele databáze. Výchozí poskytovatel je `ef`. Dostupní poskytovatelé:
* `ef`: Entity Framework Core.
* `mongodb`: MongoDB.
* `--tiered`: Vytvoří stupňovité řešení, kde jsou vrstvy Web a Http API fyzicky odděleny. Pokud není uvedeno tak vytvoří vrstvené řešení, které je méně složité a vhodné pro většinu scénářů.
* `mvc-module`: ASP.NET Core [MVC modulová šablona](Startup-Templates/Mvc-Module.md). Dodatečné možnosti:
* `--no-ui`: Určuje, že nebude zahrnuto uživatelské rozhraní. To umožňuje vytvářet moduly pouze pro služby (a.k.a. mikroslužby - bez UI).
* `module`: [Šablona modulu](Startup-Templates/Module.md). Dodatečné možnosti:
* `--no-ui`: Určuje nezahrnutí uživatelského rozhraní. Umožňuje vytvořit moduly pouze pro služby (a.k.a. mikroslužby - bez uživatelského rozhraní).
* `--output-folder` nebo `-o`: Určuje výstupní složku. Výchozí hodnota je aktuální adresář.
* `--version` nebo `-v`: Určuje verzi ABP & šablony. Může to být [štítek vydání](https://github.com/abpframework/abp/releases) nebo [název větve](https://github.com/abpframework/abp/branches). Pokud není uvedeno, používá nejnovější vydání. Většinou budete chtít použít nejnovější verzi.
### add-package
Přidá nový balíček ABP do projektu pomocí,
Přidá ABP balíček do projektu,
* Přidání souvisejícícho nuget balíčku jako závislost do projektu.
* Přidáním souvisejícícho nuget balíčku jako závislost do projektu.
* Přidáním `[DependsOn(...)]` atributu k modulové tříde v projektu (podívejte se na [dokument vývoje modulu](Module-Development-Basics.md)).
> Všimněte si, že přidaný modul může vyžadovat další konfiguraci, která je obecně uvedena v dokumentaci příslušného balíčku.
@ -78,7 +84,7 @@ abp add-package Volo.Abp.MongoDB
### add-module
Přidá více-balíčkový modul k řešení tím, že najde všechny balíčky modulu, vyhledá související projekty v řešení a přidá každý balíček do odpovídajícího projektu v řešení.
Přidá [více-balíčkový aplikační modul](Modules/Index) k řešení tím, že najde všechny balíčky modulu, vyhledá související projekty v řešení a přidá každý balíček do odpovídajícího projektu v řešení.
> Modul se obecně skládá z několika balíčků (z důvodu vrstvení, různých možností poskytovatele databáze nebo jiných důvodů). Použití příkazu `add-module` dramaticky zjednodušuje přidání modulu do řešení. Každý modul však může vyžadovat další konfiguraci, která je obecně uvedena v dokumentaci příslušného modulu.
@ -100,6 +106,7 @@ abp add-module Volo.Blogging
* `--solution` nebo `-s`: Určuje cestu k řešení (.sln). Pokud není zadáno, CLI se pokusí najít soubor .sln v aktuálním adresáři.
* `--skip-db-migrations`: Pro poskytovatele databáze EF Core automaticky přidá nový kód první migrace (`Add-Migration`) a v případě potřeby aktualizuje databázi (`Update-Database`). Tuto možnost určete k vynechání této operace.
* `-sp` nebo `--startup-project`: Relativní cesta ke složce spouštěcího projektu. Výchozí hodnota je aktuální adresář.
### update
@ -117,6 +124,8 @@ abp update [možnosti]
#### Možnosti
* `--include-previews` nebo `-p`: Zahrne náhledové, beta a rc balíčky při kontrole nových verzí.
* `--npm`: Aktualizuje pouze balíčky NPM.
* `--nuget`: Aktualizuje pouze balíčky NuGet.
### help

@ -35,7 +35,7 @@ Existuje několik základních dokumentů, které je třeba přeložit než bude
* Tutoriály
* CLI
Nový jazyk je publikován jakmile budou minimálně tyto překlady dokončeny.
Nový jazyk je publikován jakmile jsou minimálně tyto překlady dokončeny.
### Lokalizace zdrojů

@ -37,7 +37,7 @@ Otevřete řešení ve **Visual Studio**:
Řešení má vrstvenou strukturu (založenou na [Domain Driven Design](Domain-Driven-Design.md)) a obsahuje projekty jednotkovových a integračních testů předkonfigurované pro práci s **EF Core** & **SQLite in-memory** databází.
> Podívejte se na [dokument šablony MVC aplikace](Startup-Templates/Mvc.md) k detailnímu pochopení struktury řešení.
> Podívejte se na [dokument šablony aplikace](Startup-Templates/Application.md) k detailnímu pochopení struktury řešení.
### Connection string databáze

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

@ -123,6 +123,8 @@ abp update [options]
#### Options
* `--include-previews` or `-p`: Includes preview, beta and rc packages while checking the latest versions.
* `--npm`: Only updates NPM packages.
* `--nuget`: Only updates NuGet packages.
### help

@ -18,7 +18,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="8.1.1" />
<PackageReference Include="AutoMapper" Version="9.0.0" />
</ItemGroup>
</Project>

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
@ -43,8 +44,21 @@ namespace Volo.Abp.Cli.Commands
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
await UpdateNugetPackages(commandLineArgs);
UpdateNpmPackages();
var updateNpm = commandLineArgs.Options.ContainsKey(Options.Packages.Npm);
var updateNuget = commandLineArgs.Options.ContainsKey(Options.Packages.NuGet);
var both = (updateNuget && updateNpm) || (!updateNuget && !updateNpm);
if (updateNpm || both)
{
await UpdateNugetPackages(commandLineArgs);
}
if (updateNpm || both)
{
UpdateNpmPackages();
}
}
private void UpdateNpmPackages()
@ -99,6 +113,8 @@ namespace Volo.Abp.Cli.Commands
sb.AppendLine("");
sb.AppendLine("Options:");
sb.AppendLine("-p|--include-previews (if supported by the template)");
sb.AppendLine("--npm (Only updates NPM packages)");
sb.AppendLine("--nuget (Only updates Nuget packages)");
sb.AppendLine("");
sb.AppendLine("Some examples:");
sb.AppendLine("");
@ -123,6 +139,12 @@ namespace Volo.Abp.Cli.Commands
public const string Short = "p";
public const string Long = "include-previews";
}
public static class Packages
{
public const string Npm = "npm";
public const string NuGet = "nuget";
}
}
}
}

@ -43,18 +43,31 @@ namespace Volo.Abp.Cli.ProjectModification
foreach (var file in fileList)
{
UpdatePackagesInFile(file, out var needsYarnAndGulp);
UpdatePackagesInFile(file, out var packagesUpdated);
if (needsYarnAndGulp)
if (packagesUpdated)
{
RunYarnAndGulp(file);
var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar);
RunYarn(fileDirectory);
if (IsAngularProject(fileDirectory) == false)
{
Thread.Sleep(500);
RunGulp(fileDirectory);
}
}
}
}
protected virtual void UpdatePackagesInFile(string file, out bool needsYarnAndGulp)
private bool IsAngularProject(string fileDirectory)
{
return File.Exists(Path.Combine(fileDirectory, "angular.json"));
}
protected virtual void UpdatePackagesInFile(string file, out bool packagesUpdated)
{
needsYarnAndGulp = false;
packagesUpdated = false;
var fileContent = File.ReadAllText(file);
var packageJson = JObject.Parse(fileContent);
var abpPackages = GetAbpPackagesFromPackageJson(packageJson);
@ -70,7 +83,7 @@ namespace Volo.Abp.Cli.ProjectModification
if (updated)
{
needsYarnAndGulp = true;
packagesUpdated = true;
}
}
@ -122,14 +135,6 @@ namespace Volo.Abp.Cli.ProjectModification
return abpPackages;
}
protected virtual void RunYarnAndGulp(string file)
{
var fileDirectory = Path.GetDirectoryName(file).EnsureEndsWith(Path.DirectorySeparatorChar);
RunYarn(fileDirectory);
Thread.Sleep(500);
RunGulp(fileDirectory);
}
protected virtual void RunGulp(string fileDirectory)
{
Logger.LogInformation($"Running Gulp on {fileDirectory}");

@ -27,7 +27,14 @@ namespace Volo.Abp.Cli.ProjectModification
{
var directory = Path.GetDirectoryName(path);
return Directory.GetFiles(directory, "*.csproj", searchOption: SearchOption.TopDirectoryOnly).Any();
if (directory == null)
{
return false;
}
return
Directory.GetFiles(directory, "*.csproj", searchOption: SearchOption.TopDirectoryOnly).Any() ||
File.Exists(Path.Combine(directory, "angular.json"));
}
}
}

@ -21,5 +21,7 @@
public const int ClientClaimsPrefixMaxLength = 200;
public const int PairWiseSubjectSaltMaxLength = 200;
public const int UserCodeTypeMaxLength = 100;
}
}

@ -22,8 +22,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="IdentityServer4" Version="2.2.0" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.1.0" />
<PackageReference Include="IdentityServer4" Version="2.5.2" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.5.2" />
</ItemGroup>
</Project>

@ -24,6 +24,8 @@ namespace Volo.Abp.IdentityServer.ApiResources
public virtual List<ApiResourceClaim> UserClaims { get; protected set; }
public virtual Dictionary<string, string> Properties { get; protected set; }
protected ApiResource()
{
@ -45,6 +47,7 @@ namespace Volo.Abp.IdentityServer.ApiResources
Secrets = new List<ApiSecret>();
Scopes = new List<ApiScope>();
UserClaims = new List<ApiResourceClaim>();
Properties = new Dictionary<string, string>();
Scopes.Add(new ApiScope(id, name, displayName, description));
}

@ -78,6 +78,12 @@ namespace Volo.Abp.IdentityServer.Clients
public virtual string PairWiseSubjectSalt { get; set; }
public virtual int? UserSsoLifetime { get; set; }
public virtual string UserCodeType { get; set; }
public virtual int DeviceCodeLifetime { get; set; } = 300;
public virtual List<ClientScope> AllowedScopes { get; set; }
public virtual List<ClientSecret> ClientSecrets { get; set; }

@ -24,6 +24,8 @@ namespace Volo.Abp.IdentityServer.IdentityResources
public virtual List<IdentityClaim> UserClaims { get; set; }
public virtual Dictionary<string, string> Properties { get; set; }
protected IdentityResource()
{
@ -51,6 +53,7 @@ namespace Volo.Abp.IdentityServer.IdentityResources
ShowInDiscoveryDocument = showInDiscoveryDocument;
UserClaims = new List<IdentityClaim>();
Properties = new Dictionary<string, string>();
}
public IdentityResource(Guid id, IdentityServer4.Models.IdentityResource resource)
@ -64,6 +67,7 @@ namespace Volo.Abp.IdentityServer.IdentityResources
Emphasize = resource.Emphasize;
ShowInDiscoveryDocument = resource.ShowInDiscoveryDocument;
UserClaims = resource.UserClaims.Select(claimType => new IdentityClaim(id, claimType)).ToList();
Properties = resource.Properties.ToDictionary(x => x.Key, x => x.Value);
}
public virtual void AddUserClaim([NotNull] string type)

@ -1,5 +1,7 @@
using JetBrains.Annotations;
using System.Collections.Generic;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Volo.Abp.EntityFrameworkCore.Modeling;
using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.Clients;
@ -38,6 +40,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
client.Property(x => x.BackChannelLogoutUri).HasMaxLength(ClientConsts.BackChannelLogoutUriMaxLength);
client.Property(x => x.ClientClaimsPrefix).HasMaxLength(ClientConsts.ClientClaimsPrefixMaxLength);
client.Property(x => x.PairWiseSubjectSalt).HasMaxLength(ClientConsts.PairWiseSubjectSaltMaxLength);
client.Property(x => x.UserCodeType).HasMaxLength(ClientConsts.UserCodeTypeMaxLength);
client.HasMany(x => x.AllowedScopes).WithOne().HasForeignKey(x => x.ClientId).IsRequired();
client.HasMany(x => x.ClientSecrets).WithOne().HasForeignKey(x => x.ClientId).IsRequired();
@ -164,6 +167,11 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
identityResource.Property(x => x.Name).HasMaxLength(IdentityResourceConsts.NameMaxLength).IsRequired();
identityResource.Property(x => x.DisplayName).HasMaxLength(IdentityResourceConsts.DisplayNameMaxLength);
identityResource.Property(x => x.Description).HasMaxLength(IdentityResourceConsts.DescriptionMaxLength);
identityResource.Property(x => x.Properties)
.HasConversion(
d => JsonConvert.SerializeObject(d, Formatting.None),
s => JsonConvert.DeserializeObject<Dictionary<string, string>>(s)
);
identityResource.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.IdentityResourceId).IsRequired();
});
@ -186,6 +194,11 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
apiResource.Property(x => x.Name).HasMaxLength(ApiResourceConsts.NameMaxLength).IsRequired();
apiResource.Property(x => x.DisplayName).HasMaxLength(ApiResourceConsts.DisplayNameMaxLength);
apiResource.Property(x => x.Description).HasMaxLength(ApiResourceConsts.DescriptionMaxLength);
apiResource.Property(x => x.Properties)
.HasConversion(
d => JsonConvert.SerializeObject(d, Formatting.None),
s => JsonConvert.DeserializeObject<Dictionary<string, string>>(s)
);
apiResource.HasMany(x => x.Secrets).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();
apiResource.HasMany(x => x.Scopes).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();

@ -16,7 +16,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
</ItemGroup>
</Project>

@ -19,9 +19,9 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.4" />
<PackageReference Include="NSubstitute" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.6" />
<PackageReference Include="NSubstitute" Version="4.2.1" />
<PackageReference Include="Shouldly" Version="3.0.2" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.execution" Version="2.4.1" />

@ -19,8 +19,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Mongo2Go" Version="2.2.8" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="Mongo2Go" Version="2.2.11" />
</ItemGroup>
</Project>

@ -19,8 +19,8 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="NSubstitute" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="NSubstitute" Version="4.2.1" />
<PackageReference Include="Shouldly" Version="3.0.2" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.execution" Version="2.4.1" />

@ -22,6 +22,7 @@ import { EllipsisDirective } from './directives/ellipsis.directive';
import { AutofocusDirective } from './directives/autofocus.directive';
import { InputEventDebounceDirective } from './directives/debounce.directive';
import { ClickEventStopPropagationDirective } from './directives/stop-propagation.directive';
import { FormSubmitDirective } from './directives/form-submit.directive';
@NgModule({
imports: [
@ -39,6 +40,7 @@ import { ClickEventStopPropagationDirective } from './directives/stop-propagatio
DynamicLayoutComponent,
AutofocusDirective,
EllipsisDirective,
FormSubmitDirective,
LocalizationPipe,
PermissionDirective,
VisibilityDirective,
@ -55,6 +57,7 @@ import { ClickEventStopPropagationDirective } from './directives/stop-propagatio
DynamicLayoutComponent,
AutofocusDirective,
EllipsisDirective,
FormSubmitDirective,
LocalizationPipe,
PermissionDirective,
VisibilityDirective,

@ -0,0 +1,74 @@
import {
Directive,
ElementRef,
OnDestroy,
OnInit,
Self,
ChangeDetectorRef,
HostBinding,
Input,
Output,
EventEmitter,
} from '@angular/core';
import { FormGroupDirective, FormGroup, FormControl, ɵNgNoValidate } from '@angular/forms';
import { fromEvent } from 'rxjs';
import { takeUntilDestroy } from '../utils';
import { debounceTime, filter } from 'rxjs/operators';
type Controls = { [key: string]: FormControl } | FormGroup[];
@Directive({
selector: 'form[ngSubmit][formGroup]',
})
export class FormSubmitDirective implements OnInit, OnDestroy {
@Input()
notValidateOnSubmit: string | boolean;
constructor(
@Self() private formGroupDirective: FormGroupDirective,
private host: ElementRef<HTMLFormElement>,
private cdRef: ChangeDetectorRef,
) {}
ngOnInit() {
fromEvent(this.host.nativeElement as HTMLElement, 'keyup')
.pipe(
debounceTime(200),
filter((key: KeyboardEvent) => key && key.key === 'Enter'),
takeUntilDestroy(this),
)
.subscribe(() => {
this.host.nativeElement.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
});
fromEvent(this.host.nativeElement, 'submit')
.pipe(
takeUntilDestroy(this),
filter(() => !this.notValidateOnSubmit && typeof this.notValidateOnSubmit !== 'string'),
)
.subscribe(() => {
const { form } = this.formGroupDirective;
setDirty(form.controls as { [key: string]: FormControl });
form.markAsDirty();
this.cdRef.detectChanges();
});
}
ngOnDestroy(): void {}
}
function setDirty(controls: Controls) {
if (Array.isArray(controls)) {
controls.forEach(group => {
setDirty(group.controls as { [key: string]: FormControl });
});
return;
}
Object.keys(controls).forEach(key => {
controls[key].markAsDirty();
controls[key].updateValueAndValidity();
});
}

@ -1,4 +1,5 @@
export * from './autofocus.directive';
export * from './ellipsis.directive';
export * from './form-submit.directive';
export * from './permission.directive';
export * from './visibility.directive';

@ -3,6 +3,8 @@ import { ActivatedRouteSnapshot, CanActivate } from '@angular/router';
import { Store } from '@ngxs/store';
import { Observable } from 'rxjs';
import { ConfigState } from '../states';
import { tap } from 'rxjs/operators';
import { RestOccurError } from '../actions';
@Injectable({
providedIn: 'root',
@ -12,6 +14,12 @@ export class PermissionGuard implements CanActivate {
canActivate({ data }: ActivatedRouteSnapshot): Observable<boolean> {
const resource = data.requiredPolicy as string;
return this.store.select(ConfigState.getGrantedPolicy(resource));
return this.store.select(ConfigState.getGrantedPolicy(resource)).pipe(
tap(access => {
if (!access) {
this.store.dispatch(new RestOccurError({ status: 403 }));
}
}),
);
}
}

@ -35,7 +35,7 @@
</ul>
</div>
<div class="col-8">
<h4>{{ selectedGroup.displayName }}</h4>
<h4>{{ selectedGroup?.displayName }}</h4>
<hr class="mt-2 mb-3" />
<div class="pl-1 pt-1">
<div class="custom-checkbox custom-control mb-2">
@ -86,7 +86,7 @@
<button type="button" class="btn btn-secondary" #abpClose>
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<abp-button iconClass="fa fa-check" (click)="onSubmit()">{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button>
<abp-button iconClass="fa fa-check" (click)="submit()">{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button>
</ng-template>
</ng-container>
</abp-modal>

@ -183,7 +183,7 @@ export class PermissionManagementComponent implements OnInit, OnChanges {
this.setTabCheckboxState();
}
onSubmit() {
submit() {
this.modalBusy = true;
const unchangedPermissions = getPermissions(
this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),

@ -8,12 +8,14 @@ import { TenantsComponent } from './components/tenants/tenants.component';
import { TenantManagementState } from './states/tenant-management.state';
import { TenantManagementRoutingModule } from './tenant-management-routing.module';
import { FeatureManagementModule } from '@abp/ng.feature-management';
import { NgxValidateCoreModule } from '@ngx-validate/core';
@NgModule({
declarations: [TenantsComponent],
imports: [
TenantManagementRoutingModule,
NgxsModule.forFeature([TenantManagementState]),
NgxValidateCoreModule,
CoreModule,
TableModule,
ThemeSharedModule,

@ -3,7 +3,7 @@
<h4>{{ 'AbpIdentity::PersonalInfo' | abpLocalization }}</h4>
</ng-template>
<ng-template #abpBody>
<form novalidate *ngIf="form" [formGroup]="form" (ngSubmit)="onSubmit()">
<form novalidate *ngIf="form" [formGroup]="form" (ngSubmit)="submit()">
<div class="form-group">
<label for="username">{{ 'AbpIdentity::DisplayName:UserName' | abpLocalization }}</label
><span> * </span><input type="text" id="username" class="form-control" formControlName="userName" autofocus />
@ -36,6 +36,6 @@
<button #abpClose type="button" class="btn btn-secondary">
{{ 'AbpIdentity::Cancel' | abpLocalization }}
</button>
<abp-button iconClass="fa fa-check" (click)="onSubmit()">{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button>
<abp-button iconClass="fa fa-check" (click)="submit()">{{ 'AbpIdentity::Save' | abpLocalization }}</abp-button>
</ng-template>
</abp-modal>

@ -54,7 +54,7 @@ export class ProfileComponent implements OnChanges {
});
}
onSubmit() {
submit() {
if (this.form.invalid) return;
this.modalBusy = true;

@ -5,7 +5,7 @@
"@abp/ng.core": "^0.8.3",
"@angular/cdk": "^8.0.1",
"@ng-bootstrap/ng-bootstrap": "^5.1.0",
"@ngx-validate/core": "^0.0.4",
"@ngx-validate/core": "^0.0.5",
"bootstrap": "^4.3.1",
"font-awesome": "^4.7.0",
"ngx-perfect-scrollbar": "^8.0.0",

@ -53,7 +53,7 @@ export class ErrorHandler {
const { payload: err = {} as HttpErrorResponse | any } = res;
const body = snq(() => (err as HttpErrorResponse).error.error, DEFAULTS.defaultError.message);
if (err.headers.get('_AbpErrorFormat')) {
if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
const confirmation$ = this.showError(null, null, body);
if (err.status === 401) {

@ -1,6 +1,6 @@
{
"ConnectionStrings": {
"Default": "mongodb://localhost:27017|BookStore"
"Default": "mongodb://localhost:27017/BookStore"
},
"IdentityServer": {
"Clients": {

@ -4,7 +4,7 @@
"CorsOrigins": "https://*.BookStore.com,http://localhost:4200"
},
"ConnectionStrings": {
"Default": "mongodb://localhost:27017|BookStore"
"Default": "mongodb://localhost:27017/BookStore"
},
"Redis": {
"Configuration": "127.0.0.1"

@ -11,4 +11,8 @@
<ProjectReference Include="..\DashboardDemo.EntityFrameworkCore\DashboardDemo.EntityFrameworkCore.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.6" />
</ItemGroup>
</Project>

@ -1,23 +1,23 @@
// <auto-generated />
using System;
using DashboardDemo.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using DashboardDemo.EntityFrameworkCore;
namespace DashboardDemo.Migrations
{
[DbContext(typeof(DashboardDemoMigrationsDbContext))]
[Migration("20190523122033_Initial")]
[Migration("20190816095643_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -636,6 +636,8 @@ namespace DashboardDemo.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -776,6 +778,8 @@ namespace DashboardDemo.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -827,6 +831,11 @@ namespace DashboardDemo.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -1056,6 +1065,8 @@ namespace DashboardDemo.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -218,7 +218,8 @@ namespace DashboardDemo.Migrations
Name = table.Column<string>(maxLength: 200, nullable: false),
DisplayName = table.Column<string>(maxLength: 200, nullable: true),
Description = table.Column<string>(maxLength: 1000, nullable: true),
Enabled = table.Column<bool>(nullable: false)
Enabled = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{
@ -272,7 +273,10 @@ namespace DashboardDemo.Migrations
IncludeJwtId = table.Column<bool>(nullable: false),
AlwaysSendClientClaims = table.Column<bool>(nullable: false),
ClientClaimsPrefix = table.Column<string>(maxLength: 200, nullable: true),
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true)
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true),
UserSsoLifetime = table.Column<int>(nullable: true),
UserCodeType = table.Column<string>(maxLength: 100, nullable: true),
DeviceCodeLifetime = table.Column<int>(nullable: false)
},
constraints: table =>
{
@ -299,7 +303,8 @@ namespace DashboardDemo.Migrations
Enabled = table.Column<bool>(nullable: false),
Required = table.Column<bool>(nullable: false),
Emphasize = table.Column<bool>(nullable: false),
ShowInDiscoveryDocument = table.Column<bool>(nullable: false)
ShowInDiscoveryDocument = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{

@ -1,10 +1,10 @@
// <auto-generated />
using System;
using DashboardDemo.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using DashboardDemo.EntityFrameworkCore;
namespace DashboardDemo.Migrations
{
@ -15,7 +15,7 @@ namespace DashboardDemo.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -634,6 +634,8 @@ namespace DashboardDemo.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -774,6 +776,8 @@ namespace DashboardDemo.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -825,6 +829,11 @@ namespace DashboardDemo.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -1054,6 +1063,8 @@ namespace DashboardDemo.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -19,6 +19,7 @@
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="6.5.0" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="2.2.5" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="2.2.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.6" />
</ItemGroup>
<ItemGroup>

@ -10,14 +10,14 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace AuthServer.Host.Migrations
{
[DbContext(typeof(AuthServerDbContext))]
[Migration("20190408114124_Initial")]
[Migration("20190816095916_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.0-rtm-35687")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -524,7 +524,9 @@ namespace AuthServer.Host.Migrations
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime");
@ -564,6 +566,8 @@ namespace AuthServer.Host.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -683,7 +687,9 @@ namespace AuthServer.Host.Migrations
b.Property<string>("ClientUri")
.HasMaxLength(300);
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<int?>("ConsentLifetime");
@ -702,6 +708,8 @@ namespace AuthServer.Host.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -753,6 +761,11 @@ namespace AuthServer.Host.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -938,7 +951,9 @@ namespace AuthServer.Host.Migrations
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime");
@ -980,6 +995,8 @@ namespace AuthServer.Host.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -161,7 +161,8 @@ namespace AuthServer.Host.Migrations
Name = table.Column<string>(maxLength: 200, nullable: false),
DisplayName = table.Column<string>(maxLength: 200, nullable: true),
Description = table.Column<string>(maxLength: 1000, nullable: true),
Enabled = table.Column<bool>(nullable: false)
Enabled = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{
@ -215,7 +216,10 @@ namespace AuthServer.Host.Migrations
IncludeJwtId = table.Column<bool>(nullable: false),
AlwaysSendClientClaims = table.Column<bool>(nullable: false),
ClientClaimsPrefix = table.Column<string>(maxLength: 200, nullable: true),
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true)
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true),
UserSsoLifetime = table.Column<int>(nullable: true),
UserCodeType = table.Column<string>(maxLength: 100, nullable: true),
DeviceCodeLifetime = table.Column<int>(nullable: false)
},
constraints: table =>
{
@ -242,7 +246,8 @@ namespace AuthServer.Host.Migrations
Enabled = table.Column<bool>(nullable: false),
Required = table.Column<bool>(nullable: false),
Emphasize = table.Column<bool>(nullable: false),
ShowInDiscoveryDocument = table.Column<bool>(nullable: false)
ShowInDiscoveryDocument = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{

@ -15,7 +15,7 @@ namespace AuthServer.Host.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.0-rtm-35687")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -522,7 +522,9 @@ namespace AuthServer.Host.Migrations
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime");
@ -562,6 +564,8 @@ namespace AuthServer.Host.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -681,7 +685,9 @@ namespace AuthServer.Host.Migrations
b.Property<string>("ClientUri")
.HasMaxLength(300);
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<int?>("ConsentLifetime");
@ -700,6 +706,8 @@ namespace AuthServer.Host.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -751,6 +759,11 @@ namespace AuthServer.Host.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -936,7 +949,9 @@ namespace AuthServer.Host.Migrations
b.Property<Guid>("Id")
.ValueGeneratedOnAdd();
b.Property<string>("ConcurrencyStamp");
b.Property<string>("ConcurrencyStamp")
.IsConcurrencyToken()
.HasColumnName("ConcurrencyStamp");
b.Property<DateTime>("CreationTime")
.HasColumnName("CreationTime");
@ -978,6 +993,8 @@ namespace AuthServer.Host.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -10,14 +10,14 @@ using MyCompanyName.MyProjectName.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(MyProjectNameMigrationsDbContext))]
[Migration("20190523122033_Initial")]
[Migration("20190816092925_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -636,6 +636,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -776,6 +778,8 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -827,6 +831,11 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -1056,6 +1065,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -218,7 +218,8 @@ namespace MyCompanyName.MyProjectName.Migrations
Name = table.Column<string>(maxLength: 200, nullable: false),
DisplayName = table.Column<string>(maxLength: 200, nullable: true),
Description = table.Column<string>(maxLength: 1000, nullable: true),
Enabled = table.Column<bool>(nullable: false)
Enabled = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{
@ -272,7 +273,10 @@ namespace MyCompanyName.MyProjectName.Migrations
IncludeJwtId = table.Column<bool>(nullable: false),
AlwaysSendClientClaims = table.Column<bool>(nullable: false),
ClientClaimsPrefix = table.Column<string>(maxLength: 200, nullable: true),
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true)
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true),
UserSsoLifetime = table.Column<int>(nullable: true),
UserCodeType = table.Column<string>(maxLength: 100, nullable: true),
DeviceCodeLifetime = table.Column<int>(nullable: false)
},
constraints: table =>
{
@ -299,7 +303,8 @@ namespace MyCompanyName.MyProjectName.Migrations
Enabled = table.Column<bool>(nullable: false),
Required = table.Column<bool>(nullable: false),
Emphasize = table.Column<bool>(nullable: false),
ShowInDiscoveryDocument = table.Column<bool>(nullable: false)
ShowInDiscoveryDocument = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{

@ -15,7 +15,7 @@ namespace MyCompanyName.MyProjectName.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -634,6 +634,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -774,6 +776,8 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -825,6 +829,11 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -1054,6 +1063,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -10,14 +10,14 @@ using MyCompanyName.MyProjectName.EntityFrameworkCore;
namespace MyCompanyName.MyProjectName.Migrations
{
[DbContext(typeof(IdentityServerHostMigrationsDbContext))]
[Migration("20190527125607_Initial")]
[Migration("20190816093449_Initial")]
partial class Initial
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -566,6 +566,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -706,6 +708,8 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -757,6 +761,11 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -986,6 +995,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

@ -182,7 +182,8 @@ namespace MyCompanyName.MyProjectName.Migrations
Name = table.Column<string>(maxLength: 200, nullable: false),
DisplayName = table.Column<string>(maxLength: 200, nullable: true),
Description = table.Column<string>(maxLength: 1000, nullable: true),
Enabled = table.Column<bool>(nullable: false)
Enabled = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{
@ -236,7 +237,10 @@ namespace MyCompanyName.MyProjectName.Migrations
IncludeJwtId = table.Column<bool>(nullable: false),
AlwaysSendClientClaims = table.Column<bool>(nullable: false),
ClientClaimsPrefix = table.Column<string>(maxLength: 200, nullable: true),
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true)
PairWiseSubjectSalt = table.Column<string>(maxLength: 200, nullable: true),
UserSsoLifetime = table.Column<int>(nullable: true),
UserCodeType = table.Column<string>(maxLength: 100, nullable: true),
DeviceCodeLifetime = table.Column<int>(nullable: false)
},
constraints: table =>
{
@ -263,7 +267,8 @@ namespace MyCompanyName.MyProjectName.Migrations
Enabled = table.Column<bool>(nullable: false),
Required = table.Column<bool>(nullable: false),
Emphasize = table.Column<bool>(nullable: false),
ShowInDiscoveryDocument = table.Column<bool>(nullable: false)
ShowInDiscoveryDocument = table.Column<bool>(nullable: false),
Properties = table.Column<string>(nullable: true)
},
constraints: table =>
{

@ -15,7 +15,7 @@ namespace MyCompanyName.MyProjectName.Migrations
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "2.2.4-servicing-10062")
.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:MaxIdentifierLength", 128)
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
@ -564,6 +564,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.HasKey("Id");
b.ToTable("IdentityServerApiResources");
@ -704,6 +706,8 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<string>("Description")
.HasMaxLength(1000);
b.Property<int>("DeviceCodeLifetime");
b.Property<bool>("EnableLocalLogin");
b.Property<bool>("Enabled");
@ -755,6 +759,11 @@ namespace MyCompanyName.MyProjectName.Migrations
b.Property<bool>("UpdateAccessTokenClaimsOnRefresh");
b.Property<string>("UserCodeType")
.HasMaxLength(100);
b.Property<int?>("UserSsoLifetime");
b.HasKey("Id");
b.HasIndex("ClientId")
@ -984,6 +993,8 @@ namespace MyCompanyName.MyProjectName.Migrations
.IsRequired()
.HasMaxLength(200);
b.Property<string>("Properties");
b.Property<bool>("Required");
b.Property<bool>("ShowInDiscoveryDocument");

Loading…
Cancel
Save