diff --git a/npm/ng-packs/angular.json b/npm/ng-packs/angular.json
index 8aed0992b2..69119cdb64 100644
--- a/npm/ng-packs/angular.json
+++ b/npm/ng-packs/angular.json
@@ -184,6 +184,43 @@
}
}
},
+ "account": {
+ "projectType": "library",
+ "root": "packages/account",
+ "sourceRoot": "packages/account/src",
+ "prefix": "abp",
+ "architect": {
+ "build": {
+ "builder": "@angular-devkit/build-ng-packagr:build",
+ "options": {
+ "tsConfig": "packages/account/tsconfig.lib.json",
+ "project": "packages/account/ng-package.json"
+ },
+ "configurations": {
+ "production": {
+ "tsConfig": "packages/account/tsconfig.lib.prod.json"
+ }
+ }
+ },
+ "test": {
+ "builder": "@angular-builders/jest:run",
+ "options": {
+ "coverage": true,
+ "passWithNoTests": true
+ }
+ },
+ "lint": {
+ "builder": "@angular-devkit/build-angular:tslint",
+ "options": {
+ "tsConfig": [
+ "packages/account/tsconfig.lib.json",
+ "packages/account/tsconfig.spec.json"
+ ],
+ "exclude": ["**/node_modules/**"]
+ }
+ }
+ }
+ },
"identity": {
"projectType": "library",
"root": "packages/identity",
diff --git a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
index 570972c3fc..178c182324 100644
--- a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts
@@ -7,6 +7,10 @@ const routes: Routes = [
pathMatch: 'full',
loadChildren: () => import('./home/home.module').then(m => m.HomeModule),
},
+ {
+ path: 'account',
+ loadChildren: () => import('@abp/ng.account').then(m => m.AccountModule.forLazy()),
+ },
{
path: 'identity',
loadChildren: () => import('@abp/ng.identity').then(m => m.IdentityModule.forLazy()),
diff --git a/npm/ng-packs/apps/dev-app/src/app/app.module.ts b/npm/ng-packs/apps/dev-app/src/app/app.module.ts
index cade58a2f8..dd3a9636db 100644
--- a/npm/ng-packs/apps/dev-app/src/app/app.module.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/app.module.ts
@@ -11,6 +11,7 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { InspectorModule } from '@ngneat/inspector';
import { NgxsLoggerPluginModule } from '@ngxs/logger-plugin';
import { NgxsModule } from '@ngxs/store';
+import { AccountConfigModule } from '@abp/ng.account/config';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@@ -33,6 +34,7 @@ const INSPECTION_TOOLS = [
skipGetAppConfiguration: false,
}),
ThemeSharedModule.forRoot(),
+ AccountConfigModule.forRoot(),
IdentityConfigModule.forRoot(),
TenantManagementConfigModule.forRoot(),
SettingManagementConfigModule.forRoot(),
diff --git a/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts b/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
index 3790f8fe3f..c0b4602ee2 100644
--- a/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
+++ b/npm/ng-packs/apps/dev-app/src/app/home/home.component.ts
@@ -14,6 +14,6 @@ export class HomeComponent {
constructor(private oAuthService: OAuthService, private authService: AuthService) {}
login() {
- this.authService.initLogin();
+ this.authService.navigateToLogin();
}
}
diff --git a/npm/ng-packs/apps/dev-app/src/environments/environment.ts b/npm/ng-packs/apps/dev-app/src/environments/environment.ts
index 771698e394..853e2a69d9 100644
--- a/npm/ng-packs/apps/dev-app/src/environments/environment.ts
+++ b/npm/ng-packs/apps/dev-app/src/environments/environment.ts
@@ -12,10 +12,11 @@ export const environment = {
},
oAuthConfig: {
issuer: 'https://localhost:44305',
- redirectUri: baseUrl,
clientId: 'MyProjectName_App',
- responseType: 'code',
+ dummyClientSecret: '1q2w3e*',
scope: 'offline_access MyProjectName',
+ // responseType: 'code',
+ // redirectUri: baseUrl
},
apis: {
default: {
diff --git a/npm/ng-packs/packages/account/README.md b/npm/ng-packs/packages/account/README.md
new file mode 100644
index 0000000000..f3eaaed299
--- /dev/null
+++ b/npm/ng-packs/packages/account/README.md
@@ -0,0 +1,3 @@
+
@abp/ng.account
+
+[docs.abp.io](https://docs.abp.io)
diff --git a/npm/ng-packs/packages/account/config/ng-package.json b/npm/ng-packs/packages/account/config/ng-package.json
new file mode 100644
index 0000000000..8bc97815a5
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/ng-package.json
@@ -0,0 +1,7 @@
+{
+ "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
+ "dest": "../../dist/account/config",
+ "lib": {
+ "entryFile": "src/public-api.ts"
+ }
+}
diff --git a/npm/ng-packs/packages/account/config/src/account-config.module.ts b/npm/ng-packs/packages/account/config/src/account-config.module.ts
new file mode 100644
index 0000000000..60b2f8a6ef
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/account-config.module.ts
@@ -0,0 +1,12 @@
+import { ModuleWithProviders, NgModule } from '@angular/core';
+import { ACCOUNT_ROUTE_PROVIDERS } from './providers/route.provider';
+
+@NgModule()
+export class AccountConfigModule {
+ static forRoot(): ModuleWithProviders {
+ return {
+ ngModule: AccountConfigModule,
+ providers: [ACCOUNT_ROUTE_PROVIDERS],
+ };
+ }
+}
diff --git a/npm/ng-packs/packages/account/config/src/enums/index.ts b/npm/ng-packs/packages/account/config/src/enums/index.ts
new file mode 100644
index 0000000000..3bda94b078
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/enums/index.ts
@@ -0,0 +1 @@
+export * from './route-names';
diff --git a/npm/ng-packs/packages/account/config/src/enums/route-names.ts b/npm/ng-packs/packages/account/config/src/enums/route-names.ts
new file mode 100644
index 0000000000..810985e027
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/enums/route-names.ts
@@ -0,0 +1,6 @@
+export const enum eAccountRouteNames {
+ Account = 'AbpAccount::Menu:Account',
+ Login = 'AbpAccount::Login',
+ Register = 'AbpAccount::Register',
+ ManageProfile = 'AbpAccount::ManageYourProfile',
+}
diff --git a/npm/ng-packs/packages/account/config/src/providers/index.ts b/npm/ng-packs/packages/account/config/src/providers/index.ts
new file mode 100644
index 0000000000..fe08efba8c
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/providers/index.ts
@@ -0,0 +1 @@
+export * from './route.provider';
diff --git a/npm/ng-packs/packages/account/config/src/providers/route.provider.ts b/npm/ng-packs/packages/account/config/src/providers/route.provider.ts
new file mode 100644
index 0000000000..2deb086b10
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/providers/route.provider.ts
@@ -0,0 +1,39 @@
+import { eLayoutType, RoutesService } from '@abp/ng.core';
+import { APP_INITIALIZER } from '@angular/core';
+import { eAccountRouteNames } from '../enums/route-names';
+
+export const ACCOUNT_ROUTE_PROVIDERS = [
+ { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
+];
+
+export function configureRoutes(routes: RoutesService) {
+ return () => {
+ routes.add([
+ {
+ path: '/account',
+ name: eAccountRouteNames.Account,
+ invisible: true,
+ layout: eLayoutType.application,
+ order: 1,
+ },
+ {
+ path: '/account/login',
+ name: eAccountRouteNames.Login,
+ parentName: eAccountRouteNames.Account,
+ order: 1,
+ },
+ {
+ path: '/account/register',
+ name: eAccountRouteNames.Register,
+ parentName: eAccountRouteNames.Account,
+ order: 2,
+ },
+ {
+ path: '/account/manage-profile',
+ name: eAccountRouteNames.ManageProfile,
+ parentName: eAccountRouteNames.Account,
+ order: 3,
+ },
+ ]);
+ };
+}
diff --git a/npm/ng-packs/packages/account/config/src/public-api.ts b/npm/ng-packs/packages/account/config/src/public-api.ts
new file mode 100644
index 0000000000..cb4f854a64
--- /dev/null
+++ b/npm/ng-packs/packages/account/config/src/public-api.ts
@@ -0,0 +1,3 @@
+export * from './account-config.module';
+export * from './enums';
+export * from './providers';
diff --git a/npm/ng-packs/packages/account/jest.config.js b/npm/ng-packs/packages/account/jest.config.js
new file mode 100644
index 0000000000..c9c02c909f
--- /dev/null
+++ b/npm/ng-packs/packages/account/jest.config.js
@@ -0,0 +1,6 @@
+const jestConfig = require('../../jest.config');
+
+module.exports = {
+ ...jestConfig,
+ name: 'account',
+};
diff --git a/npm/ng-packs/packages/account/ng-package.json b/npm/ng-packs/packages/account/ng-package.json
new file mode 100644
index 0000000000..9e94619264
--- /dev/null
+++ b/npm/ng-packs/packages/account/ng-package.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
+ "dest": "../../dist/account",
+ "lib": {
+ "entryFile": "src/public-api.ts"
+ },
+ "whitelistedNonPeerDependencies": ["@abp/ng.theme.shared"]
+}
diff --git a/npm/ng-packs/packages/account/ngcc.config.js b/npm/ng-packs/packages/account/ngcc.config.js
new file mode 100644
index 0000000000..e40ad7d892
--- /dev/null
+++ b/npm/ng-packs/packages/account/ngcc.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ entryPoints: {
+ '.': {},
+ './config': {}
+ },
+};
diff --git a/npm/ng-packs/packages/account/package.json b/npm/ng-packs/packages/account/package.json
new file mode 100644
index 0000000000..e667997d9e
--- /dev/null
+++ b/npm/ng-packs/packages/account/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "@abp/ng.account",
+ "version": "4.3.0",
+ "homepage": "https://abp.io",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/abpframework/abp.git"
+ },
+ "dependencies": {
+ "@abp/ng.theme.shared": "~3.3.2",
+ "tslib": "^2.0.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts
new file mode 100644
index 0000000000..dfc92f41e8
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts
@@ -0,0 +1,93 @@
+import {
+ AuthGuard,
+ DynamicLayoutComponent,
+ ReplaceableComponents,
+ ReplaceableRouteContainerComponent,
+} from '@abp/ng.core';
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { AuthWrapperComponent } from './components/auth-wrapper/auth-wrapper.component';
+import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
+import { LoginComponent } from './components/login/login.component';
+import { ManageProfileComponent } from './components/manage-profile/manage-profile.component';
+import { RegisterComponent } from './components/register/register.component';
+import { ResetPasswordComponent } from './components/reset-password/reset-password.component';
+import { eAccountComponents } from './enums/components';
+import { AuthenticationFlowGuard } from './guards/authentication-flow.guard';
+
+const routes: Routes = [
+ { path: '', pathMatch: 'full', redirectTo: 'login' },
+ {
+ path: '',
+ component: DynamicLayoutComponent,
+ children: [
+ {
+ path: '',
+ component: AuthWrapperComponent,
+ children: [
+ {
+ path: 'login',
+ component: ReplaceableRouteContainerComponent,
+ canActivate: [AuthenticationFlowGuard],
+ data: {
+ replaceableComponent: {
+ key: eAccountComponents.Login,
+ defaultComponent: LoginComponent,
+ } as ReplaceableComponents.RouteData,
+ },
+ },
+ {
+ path: 'register',
+ component: ReplaceableRouteContainerComponent,
+ canActivate: [AuthenticationFlowGuard],
+ data: {
+ replaceableComponent: {
+ key: eAccountComponents.Register,
+ defaultComponent: RegisterComponent,
+ } as ReplaceableComponents.RouteData,
+ },
+ },
+ {
+ path: 'forgot-password',
+ component: ReplaceableRouteContainerComponent,
+ canActivate: [AuthenticationFlowGuard],
+ data: {
+ replaceableComponent: {
+ key: eAccountComponents.ForgotPassword,
+ defaultComponent: ForgotPasswordComponent,
+ } as ReplaceableComponents.RouteData,
+ },
+ },
+ {
+ path: 'reset-password',
+ component: ReplaceableRouteContainerComponent,
+ canActivate: [AuthenticationFlowGuard],
+ data: {
+ replaceableComponent: {
+ key: eAccountComponents.ResetPassword,
+ defaultComponent: ResetPasswordComponent,
+ } as ReplaceableComponents.RouteData,
+ },
+ },
+ ],
+ },
+ {
+ path: 'manage-profile',
+ component: ReplaceableRouteContainerComponent,
+ canActivate: [AuthGuard],
+ data: {
+ replaceableComponent: {
+ key: eAccountComponents.ManageProfile,
+ defaultComponent: ManageProfileComponent,
+ } as ReplaceableComponents.RouteData,
+ },
+ },
+ ],
+ },
+];
+
+@NgModule({
+ imports: [RouterModule.forChild(routes)],
+ exports: [RouterModule],
+})
+export class AccountRoutingModule {}
diff --git a/npm/ng-packs/packages/account/src/lib/account.module.ts b/npm/ng-packs/packages/account/src/lib/account.module.ts
new file mode 100644
index 0000000000..2d36961b97
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/account.module.ts
@@ -0,0 +1,63 @@
+import { CoreModule, LazyModuleFactory } from '@abp/ng.core';
+import { ThemeSharedModule } from '@abp/ng.theme.shared';
+import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core';
+import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
+import { NgxValidateCoreModule } from '@ngx-validate/core';
+import { AccountRoutingModule } from './account-routing.module';
+import { AuthWrapperComponent } from './components/auth-wrapper/auth-wrapper.component';
+import { ChangePasswordComponent } from './components/change-password/change-password.component';
+import { LoginComponent } from './components/login/login.component';
+import { ManageProfileComponent } from './components/manage-profile/manage-profile.component';
+import { PersonalSettingsComponent } from './components/personal-settings/personal-settings.component';
+import { RegisterComponent } from './components/register/register.component';
+import { TenantBoxComponent } from './components/tenant-box/tenant-box.component';
+import { AccountConfigOptions } from './models/config-options';
+import { ACCOUNT_CONFIG_OPTIONS } from './tokens/config-options.token';
+import { accountConfigOptionsFactory } from './utils/factory-utils';
+import { AuthenticationFlowGuard } from './guards/authentication-flow.guard';
+import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
+import { ResetPasswordComponent } from './components/reset-password/reset-password.component';
+
+const declarations = [
+ AuthWrapperComponent,
+ LoginComponent,
+ RegisterComponent,
+ TenantBoxComponent,
+ ChangePasswordComponent,
+ ManageProfileComponent,
+ PersonalSettingsComponent,
+ ForgotPasswordComponent,
+ ResetPasswordComponent,
+];
+
+@NgModule({
+ declarations: [...declarations],
+ imports: [
+ CoreModule,
+ AccountRoutingModule,
+ ThemeSharedModule,
+ NgbDropdownModule,
+ NgxValidateCoreModule,
+ ],
+ exports: [...declarations],
+})
+export class AccountModule {
+ static forChild(options = {} as AccountConfigOptions): ModuleWithProviders {
+ return {
+ ngModule: AccountModule,
+ providers: [
+ AuthenticationFlowGuard,
+ { provide: ACCOUNT_CONFIG_OPTIONS, useValue: options },
+ {
+ provide: 'ACCOUNT_OPTIONS',
+ useFactory: accountConfigOptionsFactory,
+ deps: [ACCOUNT_CONFIG_OPTIONS],
+ },
+ ],
+ };
+ }
+
+ static forLazy(options = {} as AccountConfigOptions): NgModuleFactory {
+ return new LazyModuleFactory(AccountModule.forChild(options));
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.html b/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.html
new file mode 100644
index 0000000000..b932025c3d
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.html
@@ -0,0 +1,25 @@
+
+
+
+
+ {{ 'AbpAccount::InvalidLoginRequest' | abpLocalization }}
+ {{ 'AbpAccount::ThereAreNoLoginSchemesConfiguredForThisClient' | abpLocalization }}
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.ts b/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.ts
new file mode 100644
index 0000000000..245d1c4c25
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/auth-wrapper/auth-wrapper.component.ts
@@ -0,0 +1,28 @@
+import { ConfigStateService, MultiTenancyService, SubscriptionService } from '@abp/ng.core';
+import { Component } from '@angular/core';
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/operators';
+import { eAccountComponents } from '../../enums/components';
+
+@Component({
+ selector: 'abp-auth-wrapper',
+ templateUrl: './auth-wrapper.component.html',
+ exportAs: 'abpAuthWrapper',
+ providers: [SubscriptionService],
+})
+export class AuthWrapperComponent {
+ isMultiTenancyEnabled$ = this.configState.getDeep$('multiTenancy.isEnabled');
+
+ get enableLocalLogin$(): Observable {
+ return this.configState
+ .getSetting$('Abp.Account.EnableLocalLogin')
+ .pipe(map(value => value?.toLowerCase() !== 'false'));
+ }
+
+ tenantBoxKey = eAccountComponents.TenantBox;
+
+ constructor(
+ public readonly multiTenancy: MultiTenancyService,
+ private configState: ConfigStateService,
+ ) {}
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.html b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.html
new file mode 100644
index 0000000000..37ac7f0175
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.html
@@ -0,0 +1,48 @@
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
new file mode 100644
index 0000000000..d18bd8b165
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/change-password/change-password.component.ts
@@ -0,0 +1,99 @@
+import { Profile, ProfileService } from '@abp/ng.core';
+import { getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';
+import { Component, Injector, Input, OnInit } from '@angular/core';
+import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
+import { comparePasswords, Validation } from '@ngx-validate/core';
+import { finalize } from 'rxjs/operators';
+import snq from 'snq';
+import { Account } from '../../models/account';
+import { ManageProfileStateService } from '../../services/manage-profile.state.service';
+
+const { required } = Validators;
+
+const PASSWORD_FIELDS = ['newPassword', 'repeatNewPassword'];
+
+@Component({
+ selector: 'abp-change-password-form',
+ templateUrl: './change-password.component.html',
+ exportAs: 'abpChangePasswordForm',
+})
+export class ChangePasswordComponent
+ implements OnInit, Account.ChangePasswordComponentInputs, Account.ChangePasswordComponentOutputs {
+ form: FormGroup;
+
+ inProgress: boolean;
+
+ hideCurrentPassword: boolean;
+
+ mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => {
+ if (PASSWORD_FIELDS.indexOf(String(control.name)) < 0) return errors;
+
+ return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));
+ };
+
+ constructor(
+ private fb: FormBuilder,
+ private injector: Injector,
+ private toasterService: ToasterService,
+ private profileService: ProfileService,
+ private manageProfileState: ManageProfileStateService,
+ ) {}
+
+ ngOnInit(): void {
+ this.hideCurrentPassword = !this.manageProfileState.getProfile()?.hasPassword;
+
+ const passwordValidations = getPasswordValidators(this.injector);
+
+ this.form = this.fb.group(
+ {
+ password: ['', required],
+ newPassword: [
+ '',
+ {
+ validators: [required, ...passwordValidations],
+ },
+ ],
+ repeatNewPassword: [
+ '',
+ {
+ validators: [required, ...passwordValidations],
+ },
+ ],
+ },
+ {
+ validators: [comparePasswords(PASSWORD_FIELDS)],
+ },
+ );
+
+ if (this.hideCurrentPassword) this.form.removeControl('password');
+ }
+
+ onSubmit() {
+ if (this.form.invalid) return;
+ this.inProgress = true;
+ this.profileService
+ .changePassword({
+ ...(!this.hideCurrentPassword && { currentPassword: this.form.get('password').value }),
+ newPassword: this.form.get('newPassword').value,
+ })
+ .pipe(finalize(() => (this.inProgress = false)))
+ .subscribe({
+ next: () => {
+ this.form.reset();
+ this.toasterService.success('AbpAccount::PasswordChangedMessage', '', {
+ life: 5000,
+ });
+
+ if (this.hideCurrentPassword) {
+ this.hideCurrentPassword = false;
+ this.form.addControl('password', new FormControl('', [required]));
+ }
+ },
+ error: err => {
+ this.toasterService.error(
+ snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'),
+ );
+ },
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.html b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.html
new file mode 100644
index 0000000000..9e1b974c43
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.html
@@ -0,0 +1,40 @@
+{{ 'AbpAccount::ForgotPassword' | abpLocalization }}
+
+
+
+
+
+ {{ 'AbpAccount::PasswordResetMailSentMessage' | abpLocalization }}
+
+
+
+
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts
new file mode 100644
index 0000000000..3b1a49b89c
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/forgot-password/forgot-password.component.ts
@@ -0,0 +1,35 @@
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { finalize } from 'rxjs/operators';
+import { AccountService } from '../../proxy/account/account.service';
+
+@Component({
+ selector: 'abp-forgot-password',
+ templateUrl: 'forgot-password.component.html',
+})
+export class ForgotPasswordComponent {
+ form: FormGroup;
+
+ inProgress: boolean;
+
+ isEmailSent = false;
+
+ constructor(private fb: FormBuilder, private accountService: AccountService) {
+ this.form = this.fb.group({
+ email: ['', [Validators.required, Validators.email]],
+ });
+ }
+
+ onSubmit() {
+ if (this.form.invalid) return;
+
+ this.inProgress = true;
+
+ this.accountService
+ .sendPasswordResetCode({ email: this.form.get('email').value, appName: 'Angular' })
+ .pipe(finalize(() => (this.inProgress = false)))
+ .subscribe(() => {
+ this.isEmailSent = true;
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/index.ts b/npm/ng-packs/packages/account/src/lib/components/index.ts
new file mode 100644
index 0000000000..458f0623a6
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/index.ts
@@ -0,0 +1,8 @@
+export * from './change-password/change-password.component';
+export * from './forgot-password/forgot-password.component';
+export * from './login/login.component';
+export * from './manage-profile/manage-profile.component';
+export * from './register/register.component';
+export * from './personal-settings/personal-settings.component';
+export * from './reset-password/reset-password.component';
+export * from './tenant-box/tenant-box.component';
diff --git a/npm/ng-packs/packages/account/src/lib/components/login/login.component.html b/npm/ng-packs/packages/account/src/lib/components/login/login.component.html
new file mode 100644
index 0000000000..d2d9712421
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/login/login.component.html
@@ -0,0 +1,60 @@
+{{ 'AbpAccount::Login' | abpLocalization }}
+
+ {{ 'AbpAccount::AreYouANewUser' | abpLocalization }}
+ {{
+ 'AbpAccount::Register' | abpLocalization
+ }}
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts
new file mode 100644
index 0000000000..7ef04e31a9
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/login/login.component.ts
@@ -0,0 +1,80 @@
+import { ConfigStateService, AuthService } from '@abp/ng.core';
+import { ToasterService } from '@abp/ng.theme.shared';
+import { Component, Injector, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { Store } from '@ngxs/store';
+import { throwError } from 'rxjs';
+import { catchError, finalize } from 'rxjs/operators';
+import snq from 'snq';
+import { eAccountComponents } from '../../enums/components';
+import { getRedirectUrl } from '../../utils/auth-utils';
+
+const { maxLength, required } = Validators;
+
+@Component({
+ selector: 'abp-login',
+ templateUrl: './login.component.html',
+})
+export class LoginComponent implements OnInit {
+ form: FormGroup;
+
+ inProgress: boolean;
+
+ isSelfRegistrationEnabled = true;
+
+ authWrapperKey = eAccountComponents.AuthWrapper;
+
+ constructor(
+ protected injector: Injector,
+ protected fb: FormBuilder,
+ protected toasterService: ToasterService,
+ protected authService: AuthService,
+ protected configState: ConfigStateService,
+ ) {}
+
+ ngOnInit() {
+ this.init();
+ this.buildForm();
+ }
+
+ protected init() {
+ this.isSelfRegistrationEnabled =
+ (
+ (this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') as string) || ''
+ ).toLowerCase() !== 'false';
+ }
+
+ protected buildForm() {
+ this.form = this.fb.group({
+ username: ['', [required, maxLength(255)]],
+ password: ['', [required, maxLength(128)]],
+ rememberMe: [false],
+ });
+ }
+
+ onSubmit() {
+ if (this.form.invalid) return;
+
+ this.inProgress = true;
+
+ const { username, password, rememberMe } = this.form.value;
+
+ const redirectUrl = getRedirectUrl(this.injector);
+
+ this.authService
+ .login({ username, password, rememberMe, redirectUrl })
+ .pipe(
+ catchError(err => {
+ this.toasterService.error(
+ snq(() => err.error.error_description) ||
+ snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'),
+ 'Error',
+ { life: 7000 },
+ );
+ return throwError(err);
+ }),
+ finalize(() => (this.inProgress = false)),
+ )
+ .subscribe();
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html
new file mode 100644
index 0000000000..91b635c080
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.html
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+ {{ 'AbpIdentity::ChangePassword' | abpLocalization }}
+
+
+
+
+
+
+
+
+ {{ 'AbpIdentity::PersonalSettings' | abpLocalization }}
+
+
+
+
+
+
+
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts
new file mode 100644
index 0000000000..695bec8d68
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/manage-profile/manage-profile.component.ts
@@ -0,0 +1,45 @@
+import { Profile, ProfileService } from '@abp/ng.core';
+import { fadeIn } from '@abp/ng.theme.shared';
+import { transition, trigger, useAnimation } from '@angular/animations';
+import { Component, OnInit } from '@angular/core';
+import { eAccountComponents } from '../../enums/components';
+import { ManageProfileStateService } from '../../services/manage-profile.state.service';
+
+@Component({
+ selector: 'abp-manage-profile',
+ templateUrl: './manage-profile.component.html',
+ animations: [trigger('fadeIn', [transition(':enter', useAnimation(fadeIn))])],
+ styles: [
+ `
+ .min-h-400 {
+ min-height: 400px;
+ }
+ `,
+ ],
+})
+export class ManageProfileComponent implements OnInit {
+ selectedTab = 0;
+
+ changePasswordKey = eAccountComponents.ChangePassword;
+
+ personalSettingsKey = eAccountComponents.PersonalSettings;
+
+ profile$ = this.manageProfileState.getProfile$();
+
+ hideChangePasswordTab: boolean;
+
+ constructor(
+ protected profileService: ProfileService,
+ protected manageProfileState: ManageProfileStateService,
+ ) {}
+
+ ngOnInit() {
+ this.profileService.get().subscribe(profile => {
+ this.manageProfileState.setProfile(profile);
+ if (profile.isExternal) {
+ this.hideChangePasswordTab = true;
+ this.selectedTab = 1;
+ }
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.html b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.html
new file mode 100644
index 0000000000..291d3f1cbd
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.html
@@ -0,0 +1,46 @@
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
new file mode 100644
index 0000000000..dd7789220f
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/personal-settings/personal-settings.component.ts
@@ -0,0 +1,58 @@
+import { ProfileService } from '@abp/ng.core';
+import { ToasterService } from '@abp/ng.theme.shared';
+import { Component, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { finalize } from 'rxjs/operators';
+import { Account } from '../../models/account';
+import { ManageProfileStateService } from '../../services/manage-profile.state.service';
+
+const { maxLength, required, email } = Validators;
+
+@Component({
+ selector: 'abp-personal-settings-form',
+ templateUrl: './personal-settings.component.html',
+ exportAs: 'abpPersonalSettingsForm',
+})
+export class PersonalSettingsComponent
+ implements
+ OnInit,
+ Account.PersonalSettingsComponentInputs,
+ Account.PersonalSettingsComponentOutputs {
+ form: FormGroup;
+
+ inProgress: boolean;
+
+ constructor(
+ private fb: FormBuilder,
+ private toasterService: ToasterService,
+ private profileService: ProfileService,
+ private manageProfileState: ManageProfileStateService,
+ ) {}
+
+ ngOnInit() {
+ this.buildForm();
+ }
+
+ buildForm() {
+ const profile = this.manageProfileState.getProfile();
+ this.form = this.fb.group({
+ userName: [profile.userName, [required, maxLength(256)]],
+ email: [profile.email, [required, email, maxLength(256)]],
+ name: [profile.name || '', [maxLength(64)]],
+ surname: [profile.surname || '', [maxLength(64)]],
+ phoneNumber: [profile.phoneNumber || '', [maxLength(16)]],
+ });
+ }
+
+ submit() {
+ if (this.form.invalid) return;
+ this.inProgress = true;
+ this.profileService
+ .update(this.form.value)
+ .pipe(finalize(() => (this.inProgress = false)))
+ .subscribe(profile => {
+ this.manageProfileState.setProfile(profile);
+ this.toasterService.success('AbpAccount::PersonalSettingsSaved', 'Success', { life: 5000 });
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/register/register.component.html b/npm/ng-packs/packages/account/src/lib/components/register/register.component.html
new file mode 100644
index 0000000000..404c453026
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/register/register.component.html
@@ -0,0 +1,51 @@
+{{ 'AbpAccount::Register' | abpLocalization }}
+
+ {{ 'AbpAccount::AlreadyRegistered' | abpLocalization }}
+ {{
+ 'AbpAccount::Login' | abpLocalization
+ }}
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts
new file mode 100644
index 0000000000..9be22d2203
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/register/register.component.ts
@@ -0,0 +1,102 @@
+import { AuthService, ConfigStateService } from '@abp/ng.core';
+import { getPasswordValidators, ToasterService } from '@abp/ng.theme.shared';
+import { Component, Injector, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { throwError } from 'rxjs';
+import { catchError, finalize, switchMap } from 'rxjs/operators';
+import snq from 'snq';
+import { eAccountComponents } from '../../enums/components';
+import { AccountService } from '../../proxy/account/account.service';
+import { RegisterDto } from '../../proxy/account/models';
+import { getRedirectUrl } from '../../utils/auth-utils';
+const { maxLength, required, email } = Validators;
+
+@Component({
+ selector: 'abp-register',
+ templateUrl: './register.component.html',
+})
+export class RegisterComponent implements OnInit {
+ form: FormGroup;
+
+ inProgress: boolean;
+
+ isSelfRegistrationEnabled = true;
+
+ authWrapperKey = eAccountComponents.AuthWrapper;
+
+ constructor(
+ protected fb: FormBuilder,
+ protected accountService: AccountService,
+ protected configState: ConfigStateService,
+ protected toasterService: ToasterService,
+ protected authService: AuthService,
+ protected injector: Injector,
+ ) {}
+
+ ngOnInit() {
+ this.init();
+ this.buildForm();
+ }
+
+ protected init() {
+ this.isSelfRegistrationEnabled =
+ (this.configState.getSetting('Abp.Account.IsSelfRegistrationEnabled') || '').toLowerCase() !==
+ 'false';
+
+ if (!this.isSelfRegistrationEnabled) {
+ this.toasterService.warn(
+ {
+ key: 'AbpAccount::SelfRegistrationDisabledMessage',
+ defaultValue: 'Self registration is disabled.',
+ },
+ null,
+ { life: 10000 },
+ );
+ return;
+ }
+ }
+
+ protected buildForm() {
+ this.form = this.fb.group({
+ username: ['', [required, maxLength(255)]],
+ password: ['', [required, ...getPasswordValidators(this.injector)]],
+ email: ['', [required, email]],
+ });
+ }
+
+ onSubmit() {
+ if (this.form.invalid) return;
+
+ this.inProgress = true;
+
+ const newUser = {
+ userName: this.form.get('username').value,
+ password: this.form.get('password').value,
+ emailAddress: this.form.get('email').value,
+ appName: 'Angular',
+ } as RegisterDto;
+
+ this.accountService
+ .register(newUser)
+ .pipe(
+ switchMap(() =>
+ this.authService.login({
+ username: newUser.userName,
+ password: newUser.password,
+ redirectUrl: getRedirectUrl(this.injector),
+ }),
+ ),
+ catchError(err => {
+ this.toasterService.error(
+ snq(() => err.error.error_description) ||
+ snq(() => err.error.error.message, 'AbpAccount::DefaultErrorMessage'),
+ 'Error',
+ { life: 7000 },
+ );
+ return throwError(err);
+ }),
+ finalize(() => (this.inProgress = false)),
+ )
+ .subscribe();
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.html b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.html
new file mode 100644
index 0000000000..404f525111
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.html
@@ -0,0 +1,49 @@
+{{ 'AbpAccount::ResetPassword' | abpLocalization }}
+
+
+
+
+
+ {{ 'AbpAccount::YourPasswordIsSuccessfullyReset' | abpLocalization }}
+
+
+
+
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts
new file mode 100644
index 0000000000..5e311e7b83
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/reset-password/reset-password.component.ts
@@ -0,0 +1,70 @@
+import { getPasswordValidators } from '@abp/ng.theme.shared';
+import { Component, Injector, OnInit } from '@angular/core';
+import { FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
+import { comparePasswords, Validation } from '@ngx-validate/core';
+import { finalize } from 'rxjs/operators';
+import { AccountService } from '../../proxy/account/account.service';
+
+const PASSWORD_FIELDS = ['password', 'confirmPassword'];
+
+@Component({
+ selector: 'abp-reset-password',
+ templateUrl: './reset-password.component.html',
+})
+export class ResetPasswordComponent implements OnInit {
+ form: FormGroup;
+
+ inProgress = false;
+
+ isPasswordReset = false;
+
+ mapErrorsFn: Validation.MapErrorsFn = (errors, groupErrors, control) => {
+ if (PASSWORD_FIELDS.indexOf(String(control.name)) < 0) return errors;
+
+ return errors.concat(groupErrors.filter(({ key }) => key === 'passwordMismatch'));
+ };
+
+ constructor(
+ private fb: FormBuilder,
+ private accountService: AccountService,
+ private route: ActivatedRoute,
+ private router: Router,
+ private injector: Injector,
+ ) {}
+
+ ngOnInit(): void {
+ this.route.queryParams.subscribe(({ userId, resetToken }) => {
+ if (!userId || !resetToken) this.router.navigateByUrl('/account/login');
+
+ this.form = this.fb.group(
+ {
+ userId: [userId, [Validators.required]],
+ resetToken: [resetToken, [Validators.required]],
+ password: ['', [Validators.required, ...getPasswordValidators(this.injector)]],
+ confirmPassword: ['', [Validators.required, ...getPasswordValidators(this.injector)]],
+ },
+ {
+ validators: [comparePasswords(PASSWORD_FIELDS)],
+ },
+ );
+ });
+ }
+
+ onSubmit() {
+ if (this.form.invalid || this.inProgress) return;
+
+ this.inProgress = true;
+
+ this.accountService
+ .resetPassword({
+ userId: this.form.get('userId').value,
+ resetToken: this.form.get('resetToken').value,
+ password: this.form.get('password').value,
+ })
+ .pipe(finalize(() => (this.inProgress = false)))
+ .subscribe(() => {
+ this.isPasswordReset = true;
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html
new file mode 100644
index 0000000000..e8b2df61e1
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+ {{
+ 'AbpUiMultiTenancy::Tenant' | abpLocalization
+ }}
+
+ {{ currentTenant.name || ('AbpUiMultiTenancy::NotSelected' | abpLocalization) }}
+
+
+
+
+
+
+
+
+
+ Switch Tenant
+
+
+
+
+
+
+
+ {{ 'AbpTenantManagement::Save' | abpLocalization }}
+
+
+
+
diff --git a/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts
new file mode 100644
index 0000000000..81819b9e95
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/components/tenant-box/tenant-box.component.ts
@@ -0,0 +1,73 @@
+import {
+ AbpApplicationConfigurationService,
+ AbpTenantService,
+ ConfigStateService,
+ CurrentTenantDto,
+ SessionStateService,
+} from '@abp/ng.core';
+import { ToasterService } from '@abp/ng.theme.shared';
+import { Component } from '@angular/core';
+import { finalize } from 'rxjs/operators';
+import { Account } from '../../models/account';
+
+@Component({
+ selector: 'abp-tenant-box',
+ templateUrl: './tenant-box.component.html',
+})
+export class TenantBoxComponent
+ implements Account.TenantBoxComponentInputs, Account.TenantBoxComponentOutputs {
+ currentTenant$ = this.sessionState.getTenant$();
+
+ name: string;
+
+ isModalVisible: boolean;
+
+ modalBusy: boolean;
+
+ constructor(
+ private toasterService: ToasterService,
+ private tenantService: AbpTenantService,
+ private sessionState: SessionStateService,
+ private configState: ConfigStateService,
+ private appConfigService: AbpApplicationConfigurationService,
+ ) {}
+
+ onSwitch() {
+ const tenant = this.sessionState.getTenant();
+ this.name = tenant?.name;
+ this.isModalVisible = true;
+ }
+
+ save() {
+ if (!this.name) {
+ this.setTenant(null);
+ this.isModalVisible = false;
+ return;
+ }
+
+ this.modalBusy = true;
+ this.tenantService
+ .findTenantByName(this.name, {})
+ .pipe(finalize(() => (this.modalBusy = false)))
+ .subscribe(({ success, tenantId: id, ...tenant }) => {
+ if (!success) {
+ this.showError();
+ return;
+ }
+
+ this.setTenant({ ...tenant, id, isAvailable: true });
+ this.isModalVisible = false;
+ });
+ }
+
+ private setTenant(tenant: CurrentTenantDto) {
+ this.sessionState.setTenant(tenant);
+ this.appConfigService.get().subscribe(res => this.configState.setState(res));
+ }
+
+ private showError() {
+ this.toasterService.error('AbpUiMultiTenancy::GivenTenantIsNotAvailable', 'AbpUi::Error', {
+ messageLocalizationParams: [this.name],
+ });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/enums/components.ts b/npm/ng-packs/packages/account/src/lib/enums/components.ts
new file mode 100644
index 0000000000..cebfccc13e
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/enums/components.ts
@@ -0,0 +1,11 @@
+export const enum eAccountComponents {
+ Login = 'Account.LoginComponent',
+ Register = 'Account.RegisterComponent',
+ ForgotPassword = 'Account.ForgotPasswordComponent',
+ ResetPassword = 'Account.ResetPasswordComponent',
+ ManageProfile = 'Account.ManageProfileComponent',
+ TenantBox = 'Account.TenantBoxComponent',
+ AuthWrapper = 'Account.AuthWrapperComponent',
+ ChangePassword = 'Account.ChangePasswordComponent',
+ PersonalSettings = 'Account.PersonalSettingsComponent',
+}
diff --git a/npm/ng-packs/packages/account/src/lib/enums/index.ts b/npm/ng-packs/packages/account/src/lib/enums/index.ts
new file mode 100644
index 0000000000..07635cbbc8
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/enums/index.ts
@@ -0,0 +1 @@
+export * from './components';
diff --git a/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts
new file mode 100644
index 0000000000..6828615403
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/guards/authentication-flow.guard.ts
@@ -0,0 +1,15 @@
+import { AuthService } from '@abp/ng.core';
+import { Injectable } from '@angular/core';
+import { CanActivate } from '@angular/router';
+
+@Injectable()
+export class AuthenticationFlowGuard implements CanActivate {
+ constructor(private authService: AuthService) {}
+
+ canActivate() {
+ if (this.authService.isInternalAuth) return true;
+
+ this.authService.navigateToLogin();
+ return false;
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/guards/index.ts b/npm/ng-packs/packages/account/src/lib/guards/index.ts
new file mode 100644
index 0000000000..382170b2b1
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/guards/index.ts
@@ -0,0 +1 @@
+export * from './authentication-flow.guard';
diff --git a/npm/ng-packs/packages/account/src/lib/models/account.ts b/npm/ng-packs/packages/account/src/lib/models/account.ts
new file mode 100644
index 0000000000..ef5ad926a2
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/models/account.ts
@@ -0,0 +1,12 @@
+import { TemplateRef } from '@angular/core';
+
+export namespace Account {
+ //tslint:disable
+ export interface TenantBoxComponentInputs {}
+ export interface TenantBoxComponentOutputs {}
+ export interface PersonalSettingsComponentInputs {}
+ export interface PersonalSettingsComponentOutputs {}
+ export interface ChangePasswordComponentInputs {}
+ export interface ChangePasswordComponentOutputs {}
+ // tslint:enable
+}
diff --git a/npm/ng-packs/packages/account/src/lib/models/config-options.ts b/npm/ng-packs/packages/account/src/lib/models/config-options.ts
new file mode 100644
index 0000000000..898021b04e
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/models/config-options.ts
@@ -0,0 +1,3 @@
+export interface AccountConfigOptions {
+ redirectUrl?: string;
+}
diff --git a/npm/ng-packs/packages/account/src/lib/models/index.ts b/npm/ng-packs/packages/account/src/lib/models/index.ts
new file mode 100644
index 0000000000..661c72f898
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/models/index.ts
@@ -0,0 +1,2 @@
+export * from './account';
+export * from './config-options';
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/README.md b/npm/ng-packs/packages/account/src/lib/proxy/README.md
new file mode 100644
index 0000000000..767dfd0f7c
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/README.md
@@ -0,0 +1,17 @@
+# Proxy Generation Output
+
+This directory includes the output of the latest proxy generation.
+The files and folders in it will be overwritten when proxy generation is run again.
+Therefore, please do not place your own content in this folder.
+
+In addition, `generate-proxy.json` works like a lock file.
+It includes information used by the proxy generator, so please do not delete or modify it.
+
+Finally, the name of the files and folders should not be changed for two reasons:
+- Proxy generator will keep creating them at those paths and you will have multiple copies of the same content.
+- ABP Suite generates files which include imports from this folder.
+
+> **Important Notice:** If you are building a module and are planning to publish to npm,
+> some of the generated proxies are likely to be exported from public-api.ts file. In such a case,
+> please make sure you export files directly and not from barrel exports. In other words,
+> do not include index.ts exports in your public-api.ts exports.
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/account/account.service.ts b/npm/ng-packs/packages/account/src/lib/proxy/account/account.service.ts
new file mode 100644
index 0000000000..adeb2ee5c9
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/account/account.service.ts
@@ -0,0 +1,37 @@
+import type { RegisterDto, ResetPasswordDto, SendPasswordResetCodeDto } from './models';
+import { RestService } from '@abp/ng.core';
+import { Injectable } from '@angular/core';
+import type { IdentityUserDto } from '../identity/models';
+
+@Injectable({
+ providedIn: 'root',
+})
+export class AccountService {
+ apiName = 'AbpAccount';
+
+ register = (input: RegisterDto) =>
+ this.restService.request({
+ method: 'POST',
+ url: '/api/account/register',
+ body: input,
+ },
+ { apiName: this.apiName });
+
+ resetPassword = (input: ResetPasswordDto) =>
+ this.restService.request({
+ method: 'POST',
+ url: '/api/account/reset-password',
+ body: input,
+ },
+ { apiName: this.apiName });
+
+ sendPasswordResetCode = (input: SendPasswordResetCodeDto) =>
+ this.restService.request({
+ method: 'POST',
+ url: '/api/account/send-password-reset-code',
+ body: input,
+ },
+ { apiName: this.apiName });
+
+ constructor(private restService: RestService) {}
+}
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/account/index.ts b/npm/ng-packs/packages/account/src/lib/proxy/account/index.ts
new file mode 100644
index 0000000000..7fee3af727
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/account/index.ts
@@ -0,0 +1,2 @@
+export * from './account.service';
+export * from './models';
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/account/models.ts b/npm/ng-packs/packages/account/src/lib/proxy/account/models.ts
new file mode 100644
index 0000000000..e15c8fed1b
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/account/models.ts
@@ -0,0 +1,20 @@
+
+export interface RegisterDto {
+ userName: string;
+ emailAddress: string;
+ password: string;
+ appName: string;
+}
+
+export interface ResetPasswordDto {
+ userId?: string;
+ resetToken: string;
+ password: string;
+}
+
+export interface SendPasswordResetCodeDto {
+ email: string;
+ appName: string;
+ returnUrl?: string;
+ returnUrlHash?: string;
+}
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/generate-proxy.json b/npm/ng-packs/packages/account/src/lib/proxy/generate-proxy.json
new file mode 100644
index 0000000000..bd8251f5fd
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/generate-proxy.json
@@ -0,0 +1,4745 @@
+{
+ "generated": [
+ "account"
+ ],
+ "modules": {
+ "permissionManagement": {
+ "rootPath": "permissionManagement",
+ "remoteServiceName": "AbpPermissionManagement",
+ "controllers": {
+ "Volo.Abp.PermissionManagement.PermissionsController": {
+ "controllerName": "Permissions",
+ "type": "Volo.Abp.PermissionManagement.PermissionsController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.PermissionManagement.IPermissionAppService"
+ }
+ ],
+ "actions": {
+ "GetAsyncByProviderNameAndProviderKey": {
+ "uniqueName": "GetAsyncByProviderNameAndProviderKey",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/permission-management/permissions",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "providerName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "providerKey",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "providerName",
+ "name": "providerName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "providerKey",
+ "name": "providerKey",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto",
+ "typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto"
+ }
+ },
+ "UpdateAsyncByProviderNameAndProviderKeyAndInput": {
+ "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/permission-management/permissions",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "providerName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "providerKey",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts",
+ "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
+ "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "providerName",
+ "name": "providerName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "providerKey",
+ "name": "providerKey",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
+ "typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "featureManagement": {
+ "rootPath": "featureManagement",
+ "remoteServiceName": "AbpFeatureManagement",
+ "controllers": {
+ "Volo.Abp.FeatureManagement.FeaturesController": {
+ "controllerName": "Features",
+ "type": "Volo.Abp.FeatureManagement.FeaturesController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.FeatureManagement.IFeatureAppService"
+ }
+ ],
+ "actions": {
+ "GetAsyncByProviderNameAndProviderKey": {
+ "uniqueName": "GetAsyncByProviderNameAndProviderKey",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/feature-management/features",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "providerName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "providerKey",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "providerName",
+ "name": "providerName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "providerKey",
+ "name": "providerKey",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.FeatureManagement.GetFeatureListResultDto",
+ "typeSimple": "Volo.Abp.FeatureManagement.GetFeatureListResultDto"
+ }
+ },
+ "UpdateAsyncByProviderNameAndProviderKeyAndInput": {
+ "uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/feature-management/features",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "providerName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "providerKey",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.FeatureManagement.UpdateFeaturesDto, Volo.Abp.FeatureManagement.Application.Contracts",
+ "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto",
+ "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "providerName",
+ "name": "providerName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "providerKey",
+ "name": "providerKey",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.FeatureManagement.UpdateFeaturesDto",
+ "typeSimple": "Volo.Abp.FeatureManagement.UpdateFeaturesDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "multi-tenancy": {
+ "rootPath": "multi-tenancy",
+ "remoteServiceName": "AbpTenantManagement",
+ "controllers": {
+ "Volo.Abp.TenantManagement.TenantController": {
+ "controllerName": "Tenant",
+ "type": "Volo.Abp.TenantManagement.TenantController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.TenantManagement.ITenantAppService"
+ }
+ ],
+ "actions": {
+ "GetAsyncById": {
+ "uniqueName": "GetAsyncById",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/multi-tenancy/tenants/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.TenantManagement.TenantDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantDto"
+ }
+ },
+ "GetListAsyncByInput": {
+ "uniqueName": "GetListAsyncByInput",
+ "name": "GetListAsync",
+ "httpMethod": "GET",
+ "url": "api/multi-tenancy/tenants",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.TenantManagement.GetTenantsInput, Volo.Abp.TenantManagement.Application.Contracts",
+ "type": "Volo.Abp.TenantManagement.GetTenantsInput",
+ "typeSimple": "Volo.Abp.TenantManagement.GetTenantsInput",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "Sorting",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "SkipCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "MaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.PagedResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto"
+ }
+ },
+ "CreateAsyncByInput": {
+ "uniqueName": "CreateAsyncByInput",
+ "name": "CreateAsync",
+ "httpMethod": "POST",
+ "url": "api/multi-tenancy/tenants",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.TenantManagement.TenantCreateDto, Volo.Abp.TenantManagement.Application.Contracts",
+ "type": "Volo.Abp.TenantManagement.TenantCreateDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.TenantManagement.TenantCreateDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantCreateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.TenantManagement.TenantDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantDto"
+ }
+ },
+ "UpdateAsyncByIdAndInput": {
+ "uniqueName": "UpdateAsyncByIdAndInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/multi-tenancy/tenants/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.TenantManagement.TenantUpdateDto, Volo.Abp.TenantManagement.Application.Contracts",
+ "type": "Volo.Abp.TenantManagement.TenantUpdateDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.TenantManagement.TenantUpdateDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantUpdateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.TenantManagement.TenantDto",
+ "typeSimple": "Volo.Abp.TenantManagement.TenantDto"
+ }
+ },
+ "DeleteAsyncById": {
+ "uniqueName": "DeleteAsyncById",
+ "name": "DeleteAsync",
+ "httpMethod": "DELETE",
+ "url": "api/multi-tenancy/tenants/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "GetDefaultConnectionStringAsyncById": {
+ "uniqueName": "GetDefaultConnectionStringAsyncById",
+ "name": "GetDefaultConnectionStringAsync",
+ "httpMethod": "GET",
+ "url": "api/multi-tenancy/tenants/{id}/default-connection-string",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.String",
+ "typeSimple": "string"
+ }
+ },
+ "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString": {
+ "uniqueName": "UpdateDefaultConnectionStringAsyncByIdAndDefaultConnectionString",
+ "name": "UpdateDefaultConnectionStringAsync",
+ "httpMethod": "PUT",
+ "url": "api/multi-tenancy/tenants/{id}/default-connection-string",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "defaultConnectionString",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "defaultConnectionString",
+ "name": "defaultConnectionString",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "DeleteDefaultConnectionStringAsyncById": {
+ "uniqueName": "DeleteDefaultConnectionStringAsyncById",
+ "name": "DeleteDefaultConnectionStringAsync",
+ "httpMethod": "DELETE",
+ "url": "api/multi-tenancy/tenants/{id}/default-connection-string",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "settingManagement": {
+ "rootPath": "settingManagement",
+ "remoteServiceName": "SettingManagement",
+ "controllers": {
+ "Volo.Abp.SettingManagement.EmailSettingsController": {
+ "controllerName": "EmailSettings",
+ "type": "Volo.Abp.SettingManagement.EmailSettingsController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.SettingManagement.IEmailSettingsAppService"
+ }
+ ],
+ "actions": {
+ "GetAsync": {
+ "uniqueName": "GetAsync",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/settingManagement/emailSettings",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "Volo.Abp.SettingManagement.EmailSettingsDto",
+ "typeSimple": "Volo.Abp.SettingManagement.EmailSettingsDto"
+ }
+ },
+ "UpdateAsyncByInput": {
+ "uniqueName": "UpdateAsyncByInput",
+ "name": "UpdateAsync",
+ "httpMethod": "POST",
+ "url": "api/settingManagement/emailSettings",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.SettingManagement.UpdateEmailSettingsDto, Volo.Abp.SettingManagement.Application.Contracts",
+ "type": "Volo.Abp.SettingManagement.UpdateEmailSettingsDto",
+ "typeSimple": "Volo.Abp.SettingManagement.UpdateEmailSettingsDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.SettingManagement.UpdateEmailSettingsDto",
+ "typeSimple": "Volo.Abp.SettingManagement.UpdateEmailSettingsDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "account": {
+ "rootPath": "account",
+ "remoteServiceName": "AbpAccount",
+ "controllers": {
+ "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController": {
+ "controllerName": "Account",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.AccountController",
+ "interfaces": [],
+ "actions": {
+ "LoginByLogin": {
+ "uniqueName": "LoginByLogin",
+ "name": "Login",
+ "httpMethod": "POST",
+ "url": "api/account/login",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "login",
+ "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "login",
+ "name": "login",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult"
+ }
+ },
+ "Logout": {
+ "uniqueName": "Logout",
+ "name": "Logout",
+ "httpMethod": "GET",
+ "url": "api/account/logout",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "CheckPasswordByLogin": {
+ "uniqueName": "CheckPasswordByLogin",
+ "name": "CheckPassword",
+ "httpMethod": "POST",
+ "url": "api/account/check-password",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "login",
+ "typeAsString": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo, Volo.Abp.Account.Web",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "login",
+ "name": "login",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult"
+ }
+ }
+ }
+ },
+ "Volo.Abp.Account.AccountController": {
+ "controllerName": "Account",
+ "type": "Volo.Abp.Account.AccountController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.Account.IAccountAppService"
+ }
+ ],
+ "actions": {
+ "RegisterAsyncByInput": {
+ "uniqueName": "RegisterAsyncByInput",
+ "name": "RegisterAsync",
+ "httpMethod": "POST",
+ "url": "api/account/register",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Account.RegisterDto, Volo.Abp.Account.Application.Contracts",
+ "type": "Volo.Abp.Account.RegisterDto",
+ "typeSimple": "Volo.Abp.Account.RegisterDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Account.RegisterDto",
+ "typeSimple": "Volo.Abp.Account.RegisterDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ },
+ "SendPasswordResetCodeAsyncByInput": {
+ "uniqueName": "SendPasswordResetCodeAsyncByInput",
+ "name": "SendPasswordResetCodeAsync",
+ "httpMethod": "POST",
+ "url": "api/account/send-password-reset-code",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Account.SendPasswordResetCodeDto, Volo.Abp.Account.Application.Contracts",
+ "type": "Volo.Abp.Account.SendPasswordResetCodeDto",
+ "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Account.SendPasswordResetCodeDto",
+ "typeSimple": "Volo.Abp.Account.SendPasswordResetCodeDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "ResetPasswordAsyncByInput": {
+ "uniqueName": "ResetPasswordAsyncByInput",
+ "name": "ResetPasswordAsync",
+ "httpMethod": "POST",
+ "url": "api/account/reset-password",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Account.ResetPasswordDto, Volo.Abp.Account.Application.Contracts",
+ "type": "Volo.Abp.Account.ResetPasswordDto",
+ "typeSimple": "Volo.Abp.Account.ResetPasswordDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Account.ResetPasswordDto",
+ "typeSimple": "Volo.Abp.Account.ResetPasswordDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "identity": {
+ "rootPath": "identity",
+ "remoteServiceName": "AbpIdentity",
+ "controllers": {
+ "Volo.Abp.Identity.IdentityRoleController": {
+ "controllerName": "IdentityRole",
+ "type": "Volo.Abp.Identity.IdentityRoleController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.Identity.IIdentityRoleAppService"
+ }
+ ],
+ "actions": {
+ "GetAllListAsync": {
+ "uniqueName": "GetAllListAsync",
+ "name": "GetAllListAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/roles/all",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.ListResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto"
+ }
+ },
+ "GetListAsyncByInput": {
+ "uniqueName": "GetListAsyncByInput",
+ "name": "GetListAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/roles",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.GetIdentityRolesInput, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.GetIdentityRolesInput",
+ "typeSimple": "Volo.Abp.Identity.GetIdentityRolesInput",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "Sorting",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "SkipCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "MaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.PagedResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto"
+ }
+ },
+ "GetAsyncById": {
+ "uniqueName": "GetAsyncById",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/roles/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityRoleDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleDto"
+ }
+ },
+ "CreateAsyncByInput": {
+ "uniqueName": "CreateAsyncByInput",
+ "name": "CreateAsync",
+ "httpMethod": "POST",
+ "url": "api/identity/roles",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.IdentityRoleCreateDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.IdentityRoleCreateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.IdentityRoleCreateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleCreateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityRoleDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleDto"
+ }
+ },
+ "UpdateAsyncByIdAndInput": {
+ "uniqueName": "UpdateAsyncByIdAndInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/identity/roles/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.IdentityRoleUpdateDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.IdentityRoleUpdateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.IdentityRoleUpdateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleUpdateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityRoleDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityRoleDto"
+ }
+ },
+ "DeleteAsyncById": {
+ "uniqueName": "DeleteAsyncById",
+ "name": "DeleteAsync",
+ "httpMethod": "DELETE",
+ "url": "api/identity/roles/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ },
+ "Volo.Abp.Identity.IdentityUserController": {
+ "controllerName": "IdentityUser",
+ "type": "Volo.Abp.Identity.IdentityUserController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.Identity.IIdentityUserAppService"
+ }
+ ],
+ "actions": {
+ "GetAsyncById": {
+ "uniqueName": "GetAsyncById",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ },
+ "GetListAsyncByInput": {
+ "uniqueName": "GetListAsyncByInput",
+ "name": "GetListAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.GetIdentityUsersInput, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.GetIdentityUsersInput",
+ "typeSimple": "Volo.Abp.Identity.GetIdentityUsersInput",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "Sorting",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "SkipCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "MaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.PagedResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.PagedResultDto"
+ }
+ },
+ "CreateAsyncByInput": {
+ "uniqueName": "CreateAsyncByInput",
+ "name": "CreateAsync",
+ "httpMethod": "POST",
+ "url": "api/identity/users",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.IdentityUserCreateDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.IdentityUserCreateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.IdentityUserCreateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserCreateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ },
+ "UpdateAsyncByIdAndInput": {
+ "uniqueName": "UpdateAsyncByIdAndInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/identity/users/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.IdentityUserUpdateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.IdentityUserUpdateDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ },
+ "DeleteAsyncById": {
+ "uniqueName": "DeleteAsyncById",
+ "name": "DeleteAsync",
+ "httpMethod": "DELETE",
+ "url": "api/identity/users/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "GetRolesAsyncById": {
+ "uniqueName": "GetRolesAsyncById",
+ "name": "GetRolesAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/{id}/roles",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.ListResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto"
+ }
+ },
+ "GetAssignableRolesAsync": {
+ "uniqueName": "GetAssignableRolesAsync",
+ "name": "GetAssignableRolesAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/assignable-roles",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.ListResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto"
+ }
+ },
+ "UpdateRolesAsyncByIdAndInput": {
+ "uniqueName": "UpdateRolesAsyncByIdAndInput",
+ "name": "UpdateRolesAsync",
+ "httpMethod": "PUT",
+ "url": "api/identity/users/{id}/roles",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ },
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.IdentityUserUpdateRolesDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.IdentityUserUpdateRolesDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserUpdateRolesDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ },
+ "FindByUsernameAsyncByUserName": {
+ "uniqueName": "FindByUsernameAsyncByUserName",
+ "name": "FindByUsernameAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/by-username/{userName}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "userName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "userName",
+ "name": "userName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ },
+ "FindByEmailAsyncByEmail": {
+ "uniqueName": "FindByEmailAsyncByEmail",
+ "name": "FindByEmailAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/by-email/{email}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "email",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "email",
+ "name": "email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.IdentityUserDto",
+ "typeSimple": "Volo.Abp.Identity.IdentityUserDto"
+ }
+ }
+ }
+ },
+ "Volo.Abp.Identity.IdentityUserLookupController": {
+ "controllerName": "IdentityUserLookup",
+ "type": "Volo.Abp.Identity.IdentityUserLookupController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.Identity.IIdentityUserLookupAppService"
+ }
+ ],
+ "actions": {
+ "FindByIdAsyncById": {
+ "uniqueName": "FindByIdAsyncById",
+ "name": "FindByIdAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/lookup/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Users.UserData",
+ "typeSimple": "Volo.Abp.Users.UserData"
+ }
+ },
+ "FindByUserNameAsyncByUserName": {
+ "uniqueName": "FindByUserNameAsyncByUserName",
+ "name": "FindByUserNameAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/lookup/by-username/{userName}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "userName",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "userName",
+ "name": "userName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Users.UserData",
+ "typeSimple": "Volo.Abp.Users.UserData"
+ }
+ },
+ "SearchAsyncByInput": {
+ "uniqueName": "SearchAsyncByInput",
+ "name": "SearchAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/lookup/search",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.UserLookupSearchInputDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.UserLookupSearchInputDto",
+ "typeSimple": "Volo.Abp.Identity.UserLookupSearchInputDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "Sorting",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "SkipCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ },
+ {
+ "nameOnMethod": "input",
+ "name": "MaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Application.Dtos.ListResultDto",
+ "typeSimple": "Volo.Abp.Application.Dtos.ListResultDto"
+ }
+ },
+ "GetCountAsyncByInput": {
+ "uniqueName": "GetCountAsyncByInput",
+ "name": "GetCountAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/users/lookup/count",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.UserLookupCountInputDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.UserLookupCountInputDto",
+ "typeSimple": "Volo.Abp.Identity.UserLookupCountInputDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "input"
+ }
+ ],
+ "returnValue": {
+ "type": "System.Int64",
+ "typeSimple": "number"
+ }
+ }
+ }
+ },
+ "Volo.Abp.Identity.ProfileController": {
+ "controllerName": "Profile",
+ "type": "Volo.Abp.Identity.ProfileController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.Identity.IProfileAppService"
+ }
+ ],
+ "actions": {
+ "GetAsync": {
+ "uniqueName": "GetAsync",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/identity/my-profile",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.ProfileDto",
+ "typeSimple": "Volo.Abp.Identity.ProfileDto"
+ }
+ },
+ "UpdateAsyncByInput": {
+ "uniqueName": "UpdateAsyncByInput",
+ "name": "UpdateAsync",
+ "httpMethod": "PUT",
+ "url": "api/identity/my-profile",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.UpdateProfileDto, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.UpdateProfileDto",
+ "typeSimple": "Volo.Abp.Identity.UpdateProfileDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.UpdateProfileDto",
+ "typeSimple": "Volo.Abp.Identity.UpdateProfileDto",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Identity.ProfileDto",
+ "typeSimple": "Volo.Abp.Identity.ProfileDto"
+ }
+ },
+ "ChangePasswordAsyncByInput": {
+ "uniqueName": "ChangePasswordAsyncByInput",
+ "name": "ChangePasswordAsync",
+ "httpMethod": "POST",
+ "url": "api/identity/my-profile/change-password",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "input",
+ "typeAsString": "Volo.Abp.Identity.ChangePasswordInput, Volo.Abp.Identity.Application.Contracts",
+ "type": "Volo.Abp.Identity.ChangePasswordInput",
+ "typeSimple": "Volo.Abp.Identity.ChangePasswordInput",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "input",
+ "name": "input",
+ "type": "Volo.Abp.Identity.ChangePasswordInput",
+ "typeSimple": "Volo.Abp.Identity.ChangePasswordInput",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "Body",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "System.Void",
+ "typeSimple": "System.Void"
+ }
+ }
+ }
+ }
+ }
+ },
+ "abp": {
+ "rootPath": "abp",
+ "remoteServiceName": "abp",
+ "controllers": {
+ "Pages.Abp.MultiTenancy.AbpTenantController": {
+ "controllerName": "AbpTenant",
+ "type": "Pages.Abp.MultiTenancy.AbpTenantController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.IAbpTenantAppService"
+ }
+ ],
+ "actions": {
+ "FindTenantByNameAsyncByName": {
+ "uniqueName": "FindTenantByNameAsyncByName",
+ "name": "FindTenantByNameAsync",
+ "httpMethod": "GET",
+ "url": "api/abp/multi-tenancy/tenants/by-name/{name}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "name",
+ "typeAsString": "System.String, System.Private.CoreLib",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "name",
+ "name": "name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto"
+ }
+ },
+ "FindTenantByIdAsyncById": {
+ "uniqueName": "FindTenantByIdAsyncById",
+ "name": "FindTenantByIdAsync",
+ "httpMethod": "GET",
+ "url": "api/abp/multi-tenancy/tenants/by-id/{id}",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "id",
+ "typeAsString": "System.Guid, System.Private.CoreLib",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "id",
+ "name": "id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": [],
+ "bindingSourceId": "Path",
+ "descriptorName": ""
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto"
+ }
+ }
+ }
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController": {
+ "controllerName": "AbpApplicationConfiguration",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.AbpApplicationConfigurationController",
+ "interfaces": [
+ {
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IAbpApplicationConfigurationAppService"
+ }
+ ],
+ "actions": {
+ "GetAsync": {
+ "uniqueName": "GetAsync",
+ "name": "GetAsync",
+ "httpMethod": "GET",
+ "url": "api/abp/application-configuration",
+ "supportedVersions": [],
+ "parametersOnMethod": [],
+ "parameters": [],
+ "returnValue": {
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto"
+ }
+ }
+ }
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController": {
+ "controllerName": "AbpApiDefinition",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApiExploring.AbpApiDefinitionController",
+ "interfaces": [],
+ "actions": {
+ "GetByModel": {
+ "uniqueName": "GetByModel",
+ "name": "Get",
+ "httpMethod": "GET",
+ "url": "api/abp/api-definition",
+ "supportedVersions": [],
+ "parametersOnMethod": [
+ {
+ "name": "model",
+ "typeAsString": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto, Volo.Abp.Http",
+ "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto",
+ "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto",
+ "isOptional": false,
+ "defaultValue": null
+ }
+ ],
+ "parameters": [
+ {
+ "nameOnMethod": "model",
+ "name": "IncludeTypes",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isOptional": false,
+ "defaultValue": null,
+ "constraintTypes": null,
+ "bindingSourceId": "ModelBinding",
+ "descriptorName": "model"
+ }
+ ],
+ "returnValue": {
+ "type": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel",
+ "typeSimple": "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "types": {
+ "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.UserLoginInfo": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserNameOrEmailAddress",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "Password",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "RememberMe",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.AbpLoginResult": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Result",
+ "type": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType",
+ "typeSimple": "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType",
+ "isRequired": false
+ },
+ {
+ "name": "Description",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Account.Web.Areas.Account.Controllers.Models.LoginResultType": {
+ "baseType": "System.Enum",
+ "isEnum": true,
+ "enumNames": [
+ "Success",
+ "InvalidUserNameOrPassword",
+ "NotAllowed",
+ "LockedOut",
+ "RequiresTwoFactor"
+ ],
+ "enumValues": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5
+ ],
+ "genericArguments": null,
+ "properties": null
+ },
+ "Volo.Abp.Account.RegisterDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "EmailAddress",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "Password",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "AppName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityUserDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "TenantId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Surname",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "EmailConfirmed",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumberConfirmed",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "LockoutEnabled",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "LockoutEnd",
+ "type": "System.DateTimeOffset?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "ConcurrencyStamp",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.ExtensibleFullAuditedEntityDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "TPrimaryKey"
+ ],
+ "properties": [
+ {
+ "name": "IsDeleted",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "DeleterId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "DeletionTime",
+ "type": "System.DateTime?",
+ "typeSimple": "string?",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.ExtensibleAuditedEntityDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "TPrimaryKey"
+ ],
+ "properties": [
+ {
+ "name": "LastModificationTime",
+ "type": "System.DateTime?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "LastModifierId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.ExtensibleCreationAuditedEntityDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "TPrimaryKey"
+ ],
+ "properties": [
+ {
+ "name": "CreationTime",
+ "type": "System.DateTime",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "CreatorId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.ExtensibleEntityDto": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "TKey"
+ ],
+ "properties": [
+ {
+ "name": "Id",
+ "type": "TKey",
+ "typeSimple": "TKey",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.ObjectExtending.ExtensibleObject": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "ExtraProperties",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Account.SendPasswordResetCodeDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "AppName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "ReturnUrl",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ReturnUrlHash",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Account.ResetPasswordDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserId",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ResetToken",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "Password",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.MultiTenancy.FindTenantResultDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Success",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "TenantId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.ListResultDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "T"
+ ],
+ "properties": [
+ {
+ "name": "Items",
+ "type": "[T]",
+ "typeSimple": "[T]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityRoleDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsDefault",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "IsStatic",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "IsPublic",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "ConcurrencyStamp",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.GetIdentityRolesInput": {
+ "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto": {
+ "baseType": "Volo.Abp.Application.Dtos.PagedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Sorting",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.PagedResultRequestDto": {
+ "baseType": "Volo.Abp.Application.Dtos.LimitedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "SkipCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.LimitedResultRequestDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "DefaultMaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ },
+ {
+ "name": "MaxMaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ },
+ {
+ "name": "MaxResultCount",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Application.Dtos.PagedResultDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ListResultDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "T"
+ ],
+ "properties": [
+ {
+ "name": "TotalCount",
+ "type": "System.Int64",
+ "typeSimple": "number",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityRoleCreateDto": {
+ "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": []
+ },
+ "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "IsDefault",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "IsPublic",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityRoleUpdateDto": {
+ "baseType": "Volo.Abp.Identity.IdentityRoleCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "ConcurrencyStamp",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.GetIdentityUsersInput": {
+ "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityUserCreateDto": {
+ "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Password",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Surname",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "LockoutEnabled",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "RoleNames",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityUserUpdateDto": {
+ "baseType": "Volo.Abp.Identity.IdentityUserCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Password",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ConcurrencyStamp",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.IdentityUserUpdateRolesDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "RoleNames",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.Users.UserData": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Id",
+ "type": "System.Guid",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TenantId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Surname",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "EmailConfirmed",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumberConfirmed",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.UserLookupSearchInputDto": {
+ "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.UserLookupCountInputDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.ProfileDto": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Surname",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsExternal",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "HasPassword",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.UpdateProfileDto": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Surname",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Identity.ChangePasswordInput": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "CurrentPassword",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "NewPassword",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.GetPermissionListResultDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "EntityDisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Groups",
+ "type": "[Volo.Abp.PermissionManagement.PermissionGroupDto]",
+ "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGroupDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.PermissionGroupDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Permissions",
+ "type": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]",
+ "typeSimple": "[Volo.Abp.PermissionManagement.PermissionGrantInfoDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.PermissionGrantInfoDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ParentName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsGranted",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "AllowedProviders",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ },
+ {
+ "name": "GrantedProviders",
+ "type": "[Volo.Abp.PermissionManagement.ProviderInfoDto]",
+ "typeSimple": "[Volo.Abp.PermissionManagement.ProviderInfoDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.ProviderInfoDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "ProviderName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ProviderKey",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.UpdatePermissionsDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Permissions",
+ "type": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]",
+ "typeSimple": "[Volo.Abp.PermissionManagement.UpdatePermissionDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.PermissionManagement.UpdatePermissionDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsGranted",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.SettingManagement.EmailSettingsDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "SmtpHost",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpPort",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpUserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpPassword",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpDomain",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpEnableSsl",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpUseDefaultCredentials",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultFromAddress",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultFromDisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.SettingManagement.UpdateEmailSettingsDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "SmtpHost",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpPort",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpUserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpPassword",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpDomain",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpEnableSsl",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "SmtpUseDefaultCredentials",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultFromAddress",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "DefaultFromDisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.TenantManagement.TenantDto": {
+ "baseType": "Volo.Abp.Application.Dtos.ExtensibleEntityDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.TenantManagement.GetTenantsInput": {
+ "baseType": "Volo.Abp.Application.Dtos.PagedAndSortedResultRequestDto",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Filter",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.TenantManagement.TenantCreateDto": {
+ "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "AdminEmailAddress",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ },
+ {
+ "name": "AdminPassword",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase": {
+ "baseType": "Volo.Abp.ObjectExtending.ExtensibleObject",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": true
+ }
+ ]
+ },
+ "Volo.Abp.TenantManagement.TenantUpdateDto": {
+ "baseType": "Volo.Abp.TenantManagement.TenantCreateOrUpdateDtoBase",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": []
+ },
+ "Volo.Abp.FeatureManagement.GetFeatureListResultDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Groups",
+ "type": "[Volo.Abp.FeatureManagement.FeatureGroupDto]",
+ "typeSimple": "[Volo.Abp.FeatureManagement.FeatureGroupDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.FeatureManagement.FeatureGroupDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Features",
+ "type": "[Volo.Abp.FeatureManagement.FeatureDto]",
+ "typeSimple": "[Volo.Abp.FeatureManagement.FeatureDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.FeatureManagement.FeatureDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Value",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Provider",
+ "type": "Volo.Abp.FeatureManagement.FeatureProviderDto",
+ "typeSimple": "Volo.Abp.FeatureManagement.FeatureProviderDto",
+ "isRequired": false
+ },
+ {
+ "name": "Description",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ValueType",
+ "type": "Volo.Abp.Validation.StringValues.IStringValueType",
+ "typeSimple": "Volo.Abp.Validation.StringValues.IStringValueType",
+ "isRequired": false
+ },
+ {
+ "name": "Depth",
+ "type": "System.Int32",
+ "typeSimple": "number",
+ "isRequired": false
+ },
+ {
+ "name": "ParentName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.FeatureManagement.FeatureProviderDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Key",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Validation.StringValues.IStringValueType": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Item",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ },
+ {
+ "name": "Properties",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ },
+ {
+ "name": "Validator",
+ "type": "Volo.Abp.Validation.StringValues.IValueValidator",
+ "typeSimple": "Volo.Abp.Validation.StringValues.IValueValidator",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Validation.StringValues.IValueValidator": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Item",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ },
+ {
+ "name": "Properties",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.FeatureManagement.UpdateFeaturesDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Features",
+ "type": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]",
+ "typeSimple": "[Volo.Abp.FeatureManagement.UpdateFeatureDto]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.FeatureManagement.UpdateFeatureDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Value",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Localization",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto",
+ "isRequired": false
+ },
+ {
+ "name": "Auth",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto",
+ "isRequired": false
+ },
+ {
+ "name": "Setting",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto",
+ "isRequired": false
+ },
+ {
+ "name": "CurrentUser",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto",
+ "isRequired": false
+ },
+ {
+ "name": "Features",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto",
+ "isRequired": false
+ },
+ {
+ "name": "MultiTenancy",
+ "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto",
+ "isRequired": false
+ },
+ {
+ "name": "CurrentTenant",
+ "type": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto",
+ "isRequired": false
+ },
+ {
+ "name": "Timing",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto",
+ "isRequired": false
+ },
+ {
+ "name": "Clock",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto",
+ "isRequired": false
+ },
+ {
+ "name": "ObjectExtensions",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationLocalizationConfigurationDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Values",
+ "type": "{System.String:System.Collections.Generic.Dictionary}",
+ "typeSimple": "{string:System.Collections.Generic.Dictionary}",
+ "isRequired": false
+ },
+ {
+ "name": "Languages",
+ "type": "[Volo.Abp.Localization.LanguageInfo]",
+ "typeSimple": "[Volo.Abp.Localization.LanguageInfo]",
+ "isRequired": false
+ },
+ {
+ "name": "CurrentCulture",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultResourceName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "LanguagesMap",
+ "type": "{System.String:[Volo.Abp.NameValue]}",
+ "typeSimple": "{string:[Volo.Abp.NameValue]}",
+ "isRequired": false
+ },
+ {
+ "name": "LanguageFilesMap",
+ "type": "{System.String:[Volo.Abp.NameValue]}",
+ "typeSimple": "{string:[Volo.Abp.NameValue]}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Localization.LanguageInfo": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "CultureName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "UiCultureName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "FlagIcon",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentCultureDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "DisplayName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "EnglishName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ThreeLetterIsoLanguageName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TwoLetterIsoLanguageName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsRightToLeft",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "CultureName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "NativeName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DateTimeFormat",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.DateTimeFormatDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "CalendarAlgorithmType",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DateTimeFormatLong",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ShortDatePattern",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "FullDateTimePattern",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DateSeparator",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ShortTimePattern",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "LongTimePattern",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.NameValue": {
+ "baseType": "Volo.Abp.NameValue",
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": []
+ },
+ "Volo.Abp.NameValue": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": [
+ "T"
+ ],
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Value",
+ "type": "T",
+ "typeSimple": "T",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationAuthConfigurationDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Policies",
+ "type": "{System.String:System.Boolean}",
+ "typeSimple": "{string:boolean}",
+ "isRequired": false
+ },
+ {
+ "name": "GrantedPolicies",
+ "type": "{System.String:System.Boolean}",
+ "typeSimple": "{string:boolean}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationSettingConfigurationDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Values",
+ "type": "{System.String:System.String}",
+ "typeSimple": "{string:string}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.CurrentUserDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsAuthenticated",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "Id",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "TenantId",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "UserName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SurName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Email",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "EmailVerified",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumber",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "PhoneNumberVerified",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "Roles",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationFeatureConfigurationDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Values",
+ "type": "{System.String:System.String}",
+ "typeSimple": "{string:string}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.MultiTenancy.MultiTenancyInfoDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsEnabled",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.MultiTenancy.CurrentTenantDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Id",
+ "type": "System.Guid?",
+ "typeSimple": "string?",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsAvailable",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimingDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "TimeZone",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Iana",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone",
+ "isRequired": false
+ },
+ {
+ "name": "Windows",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.IanaTimeZone": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "TimeZoneName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.WindowsTimeZone": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "TimeZoneId",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClockDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Kind",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ObjectExtensionsDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Modules",
+ "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}",
+ "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto}",
+ "isRequired": false
+ },
+ {
+ "name": "Enums",
+ "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}",
+ "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ModuleExtensionDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Entities",
+ "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}",
+ "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto}",
+ "isRequired": false
+ },
+ {
+ "name": "Configuration",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.EntityExtensionDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Properties",
+ "type": "{System.String:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}",
+ "typeSimple": "{string:Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto}",
+ "isRequired": false
+ },
+ {
+ "name": "Configuration",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayName",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto",
+ "isRequired": false
+ },
+ {
+ "name": "Api",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto",
+ "isRequired": false
+ },
+ {
+ "name": "Ui",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto",
+ "isRequired": false
+ },
+ {
+ "name": "Attributes",
+ "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]",
+ "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto]",
+ "isRequired": false
+ },
+ {
+ "name": "Configuration",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultValue",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.LocalizableStringDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Resource",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "OnGet",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto",
+ "isRequired": false
+ },
+ {
+ "name": "OnCreate",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto",
+ "isRequired": false
+ },
+ {
+ "name": "OnUpdate",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiGetDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsAvailable",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiCreateDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsAvailable",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyApiUpdateDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsAvailable",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "OnTable",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto",
+ "isRequired": false
+ },
+ {
+ "name": "OnCreateForm",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto",
+ "isRequired": false
+ },
+ {
+ "name": "OnEditForm",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto",
+ "isRequired": false
+ },
+ {
+ "name": "Lookup",
+ "type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto",
+ "typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiTableDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsVisible",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiFormDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IsVisible",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyUiLookupDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Url",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ResultListPropertyName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DisplayPropertyName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "ValuePropertyName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "FilterParamName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionPropertyAttributeDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Config",
+ "type": "{System.String:System.Object}",
+ "typeSimple": "{string:object}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Fields",
+ "type": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]",
+ "typeSimple": "[Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto]",
+ "isRequired": false
+ },
+ {
+ "name": "LocalizationResource",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending.ExtensionEnumFieldDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Value",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModelRequestDto": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "IncludeTypes",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ApplicationApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Modules",
+ "type": "{System.String:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}",
+ "typeSimple": "{string:Volo.Abp.Http.Modeling.ModuleApiDescriptionModel}",
+ "isRequired": false
+ },
+ {
+ "name": "Types",
+ "type": "{System.String:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}",
+ "typeSimple": "{string:Volo.Abp.Http.Modeling.TypeApiDescriptionModel}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ModuleApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "RootPath",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "RemoteServiceName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Controllers",
+ "type": "{System.String:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}",
+ "typeSimple": "{string:Volo.Abp.Http.Modeling.ControllerApiDescriptionModel}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ControllerApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "ControllerName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Interfaces",
+ "type": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]",
+ "typeSimple": "[Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel]",
+ "isRequired": false
+ },
+ {
+ "name": "Actions",
+ "type": "{System.String:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}",
+ "typeSimple": "{string:Volo.Abp.Http.Modeling.ActionApiDescriptionModel}",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ControllerInterfaceApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ActionApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "UniqueName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "HttpMethod",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Url",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "SupportedVersions",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ },
+ {
+ "name": "ParametersOnMethod",
+ "type": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]",
+ "typeSimple": "[Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel]",
+ "isRequired": false
+ },
+ {
+ "name": "Parameters",
+ "type": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]",
+ "typeSimple": "[Volo.Abp.Http.Modeling.ParameterApiDescriptionModel]",
+ "isRequired": false
+ },
+ {
+ "name": "ReturnValue",
+ "type": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel",
+ "typeSimple": "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.MethodParameterApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeAsString",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsOptional",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultValue",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ParameterApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "NameOnMethod",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsOptional",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "DefaultValue",
+ "type": "System.Object",
+ "typeSimple": "object",
+ "isRequired": false
+ },
+ {
+ "name": "ConstraintTypes",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ },
+ {
+ "name": "BindingSourceId",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "DescriptorName",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.ReturnValueApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.TypeApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "BaseType",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsEnum",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ },
+ {
+ "name": "EnumNames",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ },
+ {
+ "name": "EnumValues",
+ "type": "[System.Object]",
+ "typeSimple": "[object]",
+ "isRequired": false
+ },
+ {
+ "name": "GenericArguments",
+ "type": "[System.String]",
+ "typeSimple": "[string]",
+ "isRequired": false
+ },
+ {
+ "name": "Properties",
+ "type": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]",
+ "typeSimple": "[Volo.Abp.Http.Modeling.PropertyApiDescriptionModel]",
+ "isRequired": false
+ }
+ ]
+ },
+ "Volo.Abp.Http.Modeling.PropertyApiDescriptionModel": {
+ "baseType": null,
+ "isEnum": false,
+ "enumNames": null,
+ "enumValues": null,
+ "genericArguments": null,
+ "properties": [
+ {
+ "name": "Name",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "Type",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "TypeSimple",
+ "type": "System.String",
+ "typeSimple": "string",
+ "isRequired": false
+ },
+ {
+ "name": "IsRequired",
+ "type": "System.Boolean",
+ "typeSimple": "boolean",
+ "isRequired": false
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/identity/index.ts b/npm/ng-packs/packages/account/src/lib/proxy/identity/index.ts
new file mode 100644
index 0000000000..e9644dae47
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/identity/index.ts
@@ -0,0 +1 @@
+export * from './models';
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/identity/models.ts b/npm/ng-packs/packages/account/src/lib/proxy/identity/models.ts
new file mode 100644
index 0000000000..e9699b4d86
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/identity/models.ts
@@ -0,0 +1,15 @@
+import type { ExtensibleFullAuditedEntityDto } from '@abp/ng.core';
+
+export interface IdentityUserDto extends ExtensibleFullAuditedEntityDto {
+ tenantId?: string;
+ userName?: string;
+ name?: string;
+ surname?: string;
+ email?: string;
+ emailConfirmed: boolean;
+ phoneNumber?: string;
+ phoneNumberConfirmed: boolean;
+ lockoutEnabled: boolean;
+ lockoutEnd?: string;
+ concurrencyStamp?: string;
+}
diff --git a/npm/ng-packs/packages/account/src/lib/proxy/index.ts b/npm/ng-packs/packages/account/src/lib/proxy/index.ts
new file mode 100644
index 0000000000..a6a5d415f9
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/proxy/index.ts
@@ -0,0 +1,3 @@
+import * as Account from './account';
+import * as Identity from './identity';
+export { Account, Identity };
diff --git a/npm/ng-packs/packages/account/src/lib/services/index.ts b/npm/ng-packs/packages/account/src/lib/services/index.ts
new file mode 100644
index 0000000000..b94bc7c840
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/services/index.ts
@@ -0,0 +1 @@
+export * from './manage-profile.state.service';
diff --git a/npm/ng-packs/packages/account/src/lib/services/manage-profile.state.service.ts b/npm/ng-packs/packages/account/src/lib/services/manage-profile.state.service.ts
new file mode 100644
index 0000000000..74c58c0674
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/services/manage-profile.state.service.ts
@@ -0,0 +1,28 @@
+import { Injectable } from '@angular/core';
+import { InternalStore, Profile } from '@abp/ng.core';
+import { Observable } from 'rxjs';
+
+export interface ManageProfileState {
+ profile: Profile.Response;
+}
+
+@Injectable({ providedIn: 'root' })
+export class ManageProfileStateService {
+ private readonly store = new InternalStore({} as ManageProfileState);
+
+ get createOnUpdateStream() {
+ return this.store.sliceUpdate;
+ }
+
+ getProfile$(): Observable {
+ return this.store.sliceState(state => state.profile);
+ }
+
+ getProfile(): Profile.Response {
+ return this.store.state.profile;
+ }
+
+ setProfile(profile: Profile.Response) {
+ this.store.patch({ profile });
+ }
+}
diff --git a/npm/ng-packs/packages/account/src/lib/tokens/config-options.token.ts b/npm/ng-packs/packages/account/src/lib/tokens/config-options.token.ts
new file mode 100644
index 0000000000..0f479a9d1a
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/tokens/config-options.token.ts
@@ -0,0 +1,6 @@
+import { InjectionToken } from '@angular/core';
+import { AccountConfigOptions } from '../models/config-options';
+
+export const ACCOUNT_CONFIG_OPTIONS = new InjectionToken(
+ 'ACCOUNT_CONFIG_OPTIONS',
+);
diff --git a/npm/ng-packs/packages/account/src/lib/tokens/index.ts b/npm/ng-packs/packages/account/src/lib/tokens/index.ts
new file mode 100644
index 0000000000..0a88318130
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/tokens/index.ts
@@ -0,0 +1 @@
+export * from './config-options.token';
diff --git a/npm/ng-packs/packages/account/src/lib/utils/auth-utils.ts b/npm/ng-packs/packages/account/src/lib/utils/auth-utils.ts
new file mode 100644
index 0000000000..6dba19c83f
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/utils/auth-utils.ts
@@ -0,0 +1,9 @@
+import { Injector } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+import { ACCOUNT_CONFIG_OPTIONS } from '../tokens';
+
+export function getRedirectUrl(injector: Injector) {
+ const route = injector.get(ActivatedRoute);
+ const options = injector.get(ACCOUNT_CONFIG_OPTIONS);
+ return route.snapshot.queryParams.returnUrl || options.redirectUrl || '/';
+}
diff --git a/npm/ng-packs/packages/account/src/lib/utils/factory-utils.ts b/npm/ng-packs/packages/account/src/lib/utils/factory-utils.ts
new file mode 100644
index 0000000000..a04c1d4040
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/utils/factory-utils.ts
@@ -0,0 +1,8 @@
+import { AccountConfigOptions } from '../models/config-options';
+
+export function accountConfigOptionsFactory(options: AccountConfigOptions) {
+ return {
+ redirectUrl: '/',
+ ...options,
+ };
+}
diff --git a/npm/ng-packs/packages/account/src/lib/utils/index.ts b/npm/ng-packs/packages/account/src/lib/utils/index.ts
new file mode 100644
index 0000000000..9235af99fd
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/lib/utils/index.ts
@@ -0,0 +1,2 @@
+export * from './auth-utils';
+export * from './factory-utils';
diff --git a/npm/ng-packs/packages/account/src/public-api.ts b/npm/ng-packs/packages/account/src/public-api.ts
new file mode 100644
index 0000000000..c3e80345c5
--- /dev/null
+++ b/npm/ng-packs/packages/account/src/public-api.ts
@@ -0,0 +1,9 @@
+export * from './lib/account.module';
+export * from './lib/components';
+export * from './lib/enums';
+export * from './lib/guards';
+export * from './lib/models';
+export * from './lib/services';
+export * from './lib/tokens';
+export * from './lib/proxy/account';
+export * from './lib/proxy/identity';
diff --git a/npm/ng-packs/packages/account/tsconfig.lib.json b/npm/ng-packs/packages/account/tsconfig.lib.json
new file mode 100644
index 0000000000..4f48db2e46
--- /dev/null
+++ b/npm/ng-packs/packages/account/tsconfig.lib.json
@@ -0,0 +1,19 @@
+{
+ "extends": "../../tsconfig.prod.json",
+ "compilerOptions": {
+ "outDir": "../../out-tsc/lib",
+ "target": "es2015",
+ "declaration": true,
+ "inlineSources": true,
+ "types": [],
+ "lib": ["dom", "es2018"]
+ },
+ "angularCompilerOptions": {
+ "skipTemplateCodegen": true,
+ "strictMetadataEmit": true,
+ "fullTemplateTypeCheck": true,
+ "strictInjectionParameters": true,
+ "enableResourceInlining": true
+ },
+ "exclude": ["src/test.ts", "**/*.spec.ts"]
+}
diff --git a/npm/ng-packs/packages/account/tsconfig.lib.prod.json b/npm/ng-packs/packages/account/tsconfig.lib.prod.json
new file mode 100644
index 0000000000..b1d501abbc
--- /dev/null
+++ b/npm/ng-packs/packages/account/tsconfig.lib.prod.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig.lib.json",
+ "angularCompilerOptions": {
+ "enableIvy": false
+ }
+}
\ No newline at end of file
diff --git a/npm/ng-packs/packages/account/tsconfig.spec.json b/npm/ng-packs/packages/account/tsconfig.spec.json
new file mode 100644
index 0000000000..02f312c262
--- /dev/null
+++ b/npm/ng-packs/packages/account/tsconfig.spec.json
@@ -0,0 +1,11 @@
+{
+ "extends": "../../tsconfig.prod.json",
+ "compilerOptions": {
+ "emitDecoratorMetadata": true,
+ "esModuleInterop": true,
+ "outDir": "../../dist/out-tsc",
+ "module": "commonjs",
+ "types": ["jest", "node"]
+ },
+ "include": ["**/*.spec.ts", "**/*.d.ts"]
+}
diff --git a/npm/ng-packs/packages/account/tslint.json b/npm/ng-packs/packages/account/tslint.json
new file mode 100644
index 0000000000..8c3919ea62
--- /dev/null
+++ b/npm/ng-packs/packages/account/tslint.json
@@ -0,0 +1,17 @@
+{
+ "extends": "../../tslint.json",
+ "rules": {
+ "directive-selector": [
+ true,
+ "attribute",
+ "abp",
+ "camelCase"
+ ],
+ "component-selector": [
+ true,
+ "element",
+ "abp",
+ "kebab-case"
+ ]
+ }
+}
diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts
index 36d59c929b..986cb98f3b 100644
--- a/npm/ng-packs/packages/core/src/lib/core.module.ts
+++ b/npm/ng-packs/packages/core/src/lib/core.module.ts
@@ -1,5 +1,5 @@
import { CommonModule } from '@angular/common';
-import { HTTP_INTERCEPTORS, HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
+import { HttpClientModule, HttpClientXsrfModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
@@ -29,7 +29,7 @@ import { LocaleProvider } from './providers/locale.provider';
import { LocalizationService } from './services/localization.service';
import { ProfileState } from './states/profile.state';
import { oAuthStorage } from './strategies/auth-flow.strategy';
-import { CORE_OPTIONS, coreOptionsFactory } from './tokens/options.token';
+import { coreOptionsFactory, CORE_OPTIONS } from './tokens/options.token';
import { noop } from './utils/common-utils';
import './utils/date-extensions';
import { getInitialData, localeInitializer } from './utils/initial-utils';
diff --git a/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts
index c95b890239..f1e73ab805 100644
--- a/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts
+++ b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts
@@ -16,7 +16,7 @@ export class AuthGuard implements CanActivate {
return true;
}
- this.authService.initLogin();
+ this.authService.navigateToLogin();
return false;
}
}
diff --git a/npm/ng-packs/packages/core/src/lib/models/session.ts b/npm/ng-packs/packages/core/src/lib/models/session.ts
index bbdd788d8f..7ce516a180 100644
--- a/npm/ng-packs/packages/core/src/lib/models/session.ts
+++ b/npm/ng-packs/packages/core/src/lib/models/session.ts
@@ -4,9 +4,17 @@ export namespace Session {
export interface State {
language: string;
tenant: CurrentTenantDto;
+ /**
+ *
+ * @deprecated To be deleted in v5.0
+ */
sessionDetail: SessionDetail;
}
+ /**
+ *
+ * @deprecated To be deleted in v5.0
+ */
export interface SessionDetail {
openedTabCount: number;
lastExitTime: number;
diff --git a/npm/ng-packs/packages/core/src/lib/services/auth.service.ts b/npm/ng-packs/packages/core/src/lib/services/auth.service.ts
index 6ea1aee90d..b12794bc80 100644
--- a/npm/ng-packs/packages/core/src/lib/services/auth.service.ts
+++ b/npm/ng-packs/packages/core/src/lib/services/auth.service.ts
@@ -1,47 +1,61 @@
import { Injectable, Injector } from '@angular/core';
-import { Observable } from 'rxjs';
-import { AuthFlowStrategy, AUTH_FLOW_STRATEGY } from '../strategies/auth-flow.strategy';
+import { from, Observable } from 'rxjs';
+import { filter, map, switchMap, take, tap } from 'rxjs/operators';
+import {
+ AuthFlowStrategy,
+ AUTH_FLOW_STRATEGY,
+ LoginParams,
+} from '../strategies/auth-flow.strategy';
import { EnvironmentService } from './environment.service';
@Injectable({
providedIn: 'root',
})
export class AuthService {
- private flow: string;
private strategy: AuthFlowStrategy;
get isInternalAuth() {
return this.strategy.isInternalAuth;
}
- constructor(private environment: EnvironmentService, private injector: Injector) {
- this.setStrategy();
- this.listenToSetEnvironment();
- }
-
- private setStrategy = () => {
- const flow = this.environment.getEnvironment().oAuthConfig.responseType || 'password';
- if (this.flow === flow) return;
-
- if (this.strategy) this.strategy.destroy();
-
- this.flow = flow;
- this.strategy = AUTH_FLOW_STRATEGY.Code(this.injector);
- };
-
- private listenToSetEnvironment() {
- this.environment.createOnUpdateStream(state => state.oAuthConfig).subscribe(this.setStrategy);
- }
+ constructor(protected injector: Injector) {}
async init() {
- return await this.strategy.init();
+ const environmentService = this.injector.get(EnvironmentService);
+
+ return environmentService
+ .getEnvironment$()
+ .pipe(
+ map(env => env?.oAuthConfig),
+ filter(oAuthConfig => !!oAuthConfig),
+ tap(oAuthConfig => {
+ this.strategy =
+ oAuthConfig.responseType === 'code'
+ ? AUTH_FLOW_STRATEGY.Code(this.injector)
+ : AUTH_FLOW_STRATEGY.Password(this.injector);
+ }),
+ switchMap(() => from(this.strategy.init())),
+ take(1),
+ )
+ .toPromise();
}
logout(): Observable {
return this.strategy.logout();
}
+ /**
+ * @deprecated Use navigateToLogin method instead. To be deleted in v5.0
+ */
initLogin() {
- this.strategy.login();
+ this.strategy.navigateToLogin();
+ }
+
+ navigateToLogin() {
+ this.strategy.navigateToLogin();
+ }
+
+ login(params: LoginParams) {
+ return this.strategy.login(params);
}
}
diff --git a/npm/ng-packs/packages/core/src/lib/services/session-state.service.ts b/npm/ng-packs/packages/core/src/lib/services/session-state.service.ts
index 1d1c1e394d..be521f33c1 100644
--- a/npm/ng-packs/packages/core/src/lib/services/session-state.service.ts
+++ b/npm/ng-packs/packages/core/src/lib/services/session-state.service.ts
@@ -6,12 +6,6 @@ import { CurrentTenantDto } from '../proxy/volo/abp/asp-net-core/mvc/multi-tenan
import { InternalStore } from '../utils/internal-store-utils';
import { ConfigStateService } from './config-state.service';
-export interface SessionDetail {
- openedTabCount: number;
- lastExitTime: number;
- remember: boolean;
-}
-
@Injectable({
providedIn: 'root',
})
diff --git a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts
index d3d4c9f70f..3b59c4d6ff 100644
--- a/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts
+++ b/npm/ng-packs/packages/core/src/lib/strategies/auth-flow.strategy.ts
@@ -1,11 +1,23 @@
+import { HttpHeaders } from '@angular/common/http';
import { Injector } from '@angular/core';
+import { Router } from '@angular/router';
import { Store } from '@ngxs/store';
-import { AuthConfig, OAuthService, OAuthStorage } from 'angular-oauth2-oidc';
-import { Observable, of } from 'rxjs';
+import { AuthConfig, OAuthInfoEvent, OAuthService, OAuthStorage } from 'angular-oauth2-oidc';
+import { from, Observable, of } from 'rxjs';
+import { filter, switchMap, tap } from 'rxjs/operators';
import { RestOccurError } from '../actions/rest.actions';
+import { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';
+import { SessionStateService } from '../services/session-state.service';
import { ConfigStateService } from '../services/config-state.service';
import { EnvironmentService } from '../services/environment.service';
+export interface LoginParams {
+ username: string;
+ password: string;
+ rememberMe?: boolean;
+ redirectUrl?: string;
+}
+
export const oAuthStorage = localStorage;
export abstract class AuthFlowStrategy {
@@ -17,9 +29,9 @@ export abstract class AuthFlowStrategy {
protected oAuthService: OAuthService;
protected oAuthConfig: AuthConfig;
abstract checkIfInternalAuth(): boolean;
- abstract login(): void;
+ abstract navigateToLogin(): void;
abstract logout(): Observable;
- abstract destroy(): void;
+ abstract login(params?: LoginParams): Observable;
private catchError = err => this.store.dispatch(new RestOccurError(err));
@@ -39,7 +51,16 @@ export abstract class AuthFlowStrategy {
if (shouldClear) clearOAuthStorage(oAuthStorage);
this.oAuthService.configure(this.oAuthConfig);
- return this.oAuthService.loadDiscoveryDocument().catch(this.catchError);
+ return this.oAuthService
+ .loadDiscoveryDocument()
+ .then(() => {
+ if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
+ return Promise.resolve();
+ }
+
+ return this.oAuthService.refreshToken() as Promise;
+ })
+ .catch(this.catchError);
}
}
@@ -50,17 +71,10 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy {
return super
.init()
.then(() => this.oAuthService.tryLogin())
- .then(() => {
- if (this.oAuthService.hasValidAccessToken() || !this.oAuthService.getRefreshToken()) {
- return Promise.resolve();
- }
-
- return this.oAuthService.refreshToken() as Promise;
- })
.then(() => this.oAuthService.setupAutomaticSilentRefresh({}, 'access_token'));
}
- login() {
+ navigateToLogin() {
this.oAuthService.initCodeFlow();
}
@@ -70,18 +84,115 @@ export class AuthCodeFlowStrategy extends AuthFlowStrategy {
}
logout() {
- this.oAuthService.revokeTokenAndLogout();
- // TODO: no need to return of(null). It may be removed in v5.0.
+ return from(this.oAuthService.revokeTokenAndLogout());
+ }
+
+ login() {
+ this.oAuthService.initCodeFlow();
return of(null);
}
+}
- destroy() {}
+export class AuthPasswordFlowStrategy extends AuthFlowStrategy {
+ readonly isInternalAuth = true;
+ private cookieKey = 'rememberMe';
+ private storageKey = 'passwordFlow';
+ private appConfigService = this.injector.get(AbpApplicationConfigurationService);
+
+ private listenToTokenExpiration() {
+ this.oAuthService.events
+ .pipe(
+ filter(
+ event =>
+ event instanceof OAuthInfoEvent &&
+ event.type === 'token_expires' &&
+ event.info === 'access_token',
+ ),
+ )
+ .subscribe(() => {
+ if (this.oAuthService.getRefreshToken()) {
+ this.oAuthService.refreshToken();
+ } else {
+ this.oAuthService.logOut();
+ this.appConfigService.get().subscribe(res => {
+ this.configState.setState(res);
+ });
+ }
+ });
+ }
+
+ private setRememberMe(remember: boolean) {
+ this.removeRememberMe();
+ localStorage.setItem(this.storageKey, 'true');
+ document.cookie = `${this.cookieKey}=true${
+ remember ? ';expires=Fri, 31 Dec 9999 23:59:59 GMT' : ''
+ }`;
+ }
+
+ private removeRememberMe() {
+ localStorage.removeItem(this.storageKey);
+ document.cookie = this.cookieKey + '= ; expires = Thu, 01 Jan 1970 00:00:00 GMT';
+ }
+
+ async init() {
+ if (!getCookieValueByName('rememberMe') && localStorage.getItem(this.storageKey)) {
+ this.oAuthService.logOut();
+ }
+
+ return super.init().then(() => this.listenToTokenExpiration());
+ }
+
+ navigateToLogin() {
+ const router = this.injector.get(Router);
+ router.navigateByUrl('/account/login');
+ }
+
+ checkIfInternalAuth() {
+ return true;
+ }
+
+ login(params: LoginParams): Observable {
+ const sessionState = this.injector.get(SessionStateService);
+ const router = this.injector.get(Router);
+ const tenant = sessionState.getTenant();
+
+ return from(
+ this.oAuthService.fetchTokenUsingPasswordFlow(
+ params.username,
+ params.password,
+ new HttpHeaders({ ...(tenant && tenant.id && { __tenant: tenant.id }) }),
+ ),
+ ).pipe(
+ switchMap(() => this.appConfigService.get()),
+ tap(res => {
+ this.configState.setState(res);
+ this.setRememberMe(params.rememberMe);
+ router.navigate([params.redirectUrl || '/']);
+ }),
+ );
+ }
+
+ logout() {
+ const router = this.injector.get(Router);
+
+ return from(this.oAuthService.revokeTokenAndLogout()).pipe(
+ switchMap(() => this.appConfigService.get()),
+ tap(res => {
+ this.configState.setState(res);
+ router.navigateByUrl('/');
+ this.removeRememberMe();
+ }),
+ );
+ }
}
export const AUTH_FLOW_STRATEGY = {
Code(injector: Injector) {
return new AuthCodeFlowStrategy(injector);
},
+ Password(injector: Injector) {
+ return new AuthPasswordFlowStrategy(injector);
+ },
};
export function clearOAuthStorage(storage: OAuthStorage = oAuthStorage) {
@@ -114,3 +225,8 @@ function shouldStorageClear(clientId: string, storage: OAuthStorage): boolean {
if (shouldClear) storage.setItem(key, clientId);
return shouldClear;
}
+
+function getCookieValueByName(name: string) {
+ const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
+ return match ? match[2] : '';
+}
diff --git a/npm/ng-packs/packages/core/src/lib/strategies/index.ts b/npm/ng-packs/packages/core/src/lib/strategies/index.ts
index d71f952307..2e621e7907 100644
--- a/npm/ng-packs/packages/core/src/lib/strategies/index.ts
+++ b/npm/ng-packs/packages/core/src/lib/strategies/index.ts
@@ -1,4 +1,3 @@
-export * from './auth-flow.strategy';
export * from './container.strategy';
export * from './content-security.strategy';
export * from './content.strategy';
diff --git a/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts
index f34f503227..151e0ec639 100644
--- a/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts
+++ b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts
@@ -21,12 +21,12 @@ describe('AuthGuard', () => {
expect(guard.canActivate()).toBe(true);
});
- it('should execute the initLogin method of the authService', () => {
+ it('should execute the navigateToLogin method of the authService', () => {
const authService = spectator.inject(AuthService);
spectator.inject(OAuthService).hasValidAccessToken.andReturn(false);
- const initLoginSpy = jest.spyOn(authService, 'initLogin');
+ const navigateToLoginSpy = jest.spyOn(authService, 'navigateToLogin');
expect(guard.canActivate()).toBe(false);
- expect(initLoginSpy).toHaveBeenCalled();
+ expect(navigateToLoginSpy).toHaveBeenCalled();
});
});
diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
index d37200c9c8..9d5f7483fe 100644
--- a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
+++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts
@@ -1,9 +1,7 @@
import { registerLocaleData } from '@angular/common';
import { Injector } from '@angular/core';
-import { Store } from '@ngxs/store';
import { OAuthService } from 'angular-oauth2-oidc';
import { tap } from 'rxjs/operators';
-import { ApplicationConfiguration } from '../models/application-configuration';
import { ABP } from '../models/common';
import { Environment } from '../models/environment';
import { AbpApplicationConfigurationService } from '../proxy/volo/abp/asp-net-core/mvc/application-configurations/abp-application-configuration.service';
diff --git a/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html
index 981de3496b..ebdac1326d 100644
--- a/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html
+++ b/npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html
@@ -43,7 +43,12 @@
}}
-