import { InjectionToken, Injectable, Optional, Inject, Component, ChangeDetectionStrategy, ChangeDetectorRef, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Router, ActivatedRoute, RouterModule } from '@angular/router';
import { NbAuthService, NB_AUTH_OPTIONS, NbAuthStrategyOptions, NbAuthStrategy, NbAuthResult, NbAuthIllegalTokenError, getDeepFromObject as getDeepFromObject$1 } from '@nebular/auth';
import { TranslateService, TranslateModule } from '@ngx-translate/core';
import { NbLayoutModule, NbCardModule, NbCheckboxModule, NbAlertModule, NbInputModule, NbButtonModule } from '@nebular/theme';
import { FormsModule } from '@angular/forms';
import { of, Subject } from 'rxjs';
import { map, catchError, concatAll, switchMap } from 'rxjs/operators';
import { HttpErrorResponse, HttpClient } from '@angular/common/http';
import { JSEncrypt } from 'jsencrypt';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const lang = {
'与第一次输入不符合': '与第一次输入不符合.',
'修改密码': '修改密码',
'密码': '密码',
'密码:': '密码:',
'密码是必填的': '密码是必填的',
'密码规则提示': '密码应该包含 最小长度 {{minLength}} 最大长度 {{maxLength}} 个字符',
'您好,欢迎使用': '您好,欢迎使用',
'成功!': '成功!',
'新密码': '新密码',
'新密码:': '新密码:',
'新密码是必填的!': '新密码是必填的!',
'旧密码:': '旧密码:',
'旧密码是必填的!': '旧密码是必填的',
'登出提示': '正在登出, 请等待...',
'登录': '登录',
'确认密码': '确认密码',
'确认密码:': '确认密码:',
'确认密码是必填的!': '确认密码是必填的!',
'请设置您的新密码': '请设置您的新密码',
'账户': '账户',
'账户:': '账户:',
'账户是必填的': '账户是必填的',
'错误!': '错误!'
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const lang$1 = {
'与第一次输入不符合': '與第一次輸入不符合.',
'修改密码': '更改密碼',
'密码': '密碼',
'密码:': '密碼:',
'密码是必填的': '必須填寫密碼',
'密码规则提示': '密碼應該包含 最小長度 {{minLength}} 最大長度 {{maxLength}} 個字符',
'您好,欢迎使用': '您好,歡迎使用',
'成功!': '成功!',
'新密码': '新密碼',
'新密码:': '新密碼:',
'新密码是必填的!': '必須填寫新密碼',
'旧密码:': '舊密碼:',
'旧密码是必填的!': '必須填寫舊密碼',
'登出提示': '正在登出, 請稍候⋯',
'登录': '登入',
'确认密码': '確認密碼',
'确认密码:': '確認密碼:',
'确认密码是必填的!': '必須填寫確認密碼',
'请设置您的新密码': '請設置您的新密碼',
'账户': '賬戶',
'账户:': '賬戶:',
'账户是必填的': '必須填寫賬戶',
'错误!': '錯誤!'
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
const AUTH_DEFAULT_LANG = new InjectionToken('AUTH_DEFAULT_LANG');
class LoginLangService {
/**
* @param {?} _translate
* @param {?=} lang
*/
constructor(_translate, lang$2) {
this._translate = _translate;
this._translate.setTranslation('zh-cn', lang);
this._translate.setTranslation('zh-hk', lang$1);
this._translate.setDefaultLang(lang$2 ? lang$2 : 'zh-cn');
this._translate.use(lang$2 ? lang$2 : 'zh-cn');
}
/**
* @param {?=} lang
* @return {?}
*/
setTranslate(lang) {
this._translate.use(lang);
}
}
LoginLangService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
LoginLangService.ctorParameters = () => [
{ type: TranslateService },
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [AUTH_DEFAULT_LANG,] }] }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
// getDeepFromObject({result: {data: 1}}, 'result.data', 2); // returns 1
/**
* @param {?=} object
* @param {?=} name
* @param {?=} defaultValue
* @return {?}
*/
function getDeepFromObject(object = {}, name, defaultValue) {
/** @type {?} */
const keys = name.split('.');
// clone the object
/** @type {?} */
let currentValue = object;
for (let key of keys) {
if (currentValue) {
currentValue = currentValue[key];
}
else {
break;
}
}
return typeof currentValue === 'undefined' ? defaultValue : currentValue;
}
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class LoginComponent {
/**
* @param {?} service
* @param {?} langService
* @param {?=} options
* @param {?=} cd
* @param {?=} router
*/
constructor(service, langService, options = {}, cd, router) {
this.service = service;
this.langService = langService;
this.options = options;
this.cd = cd;
this.router = router;
this.redirectDelay = 0;
this.showMessages = {};
this.strategy = '';
this.errors = [];
this.messages = [];
this.user = {};
this.submitted = false;
this.socialLinks = [];
this.rememberMe = false;
this.redirectDelay = this.getConfigValue('forms.login.redirectDelay');
this.showMessages = this.getConfigValue('forms.login.showMessages');
this.strategy = this.getConfigValue('forms.login.strategy');
this.socialLinks = this.getConfigValue('forms.login.socialLinks');
this.rememberMe = this.getConfigValue('forms.login.rememberMe');
}
/**
* @return {?}
*/
login() {
this.errors = [];
this.messages = [];
this.submitted = true;
this.service.authenticate(this.strategy, this.user).subscribe((/**
* @param {?} result
* @return {?}
*/
(result) => {
this.submitted = false;
if (result.isSuccess()) {
this.messages = result.getMessages();
}
else {
this.errors = result.getErrors();
}
/** @type {?} */
const redirect = result.getRedirect();
if (redirect) {
setTimeout((/**
* @return {?}
*/
() => {
return this.router.navigateByUrl(redirect);
}), this.redirectDelay);
}
this.cd.detectChanges();
}));
}
/**
* @param {?} key
* @return {?}
*/
getConfigValue(key) {
return getDeepFromObject(this.options, key, null);
}
}
LoginComponent.decorators = [
{ type: Component, args: [{
selector: 'auth-login',
template: "
\u767B\u5F55
\r\n\u60A8\u597D,\u6B22\u8FCE\u4F7F\u7528
\r\n\r\n\r\n \u9519\u8BEF!
\r\n \r\n\r\n\r\n\r\n \u6210\u529F!
\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
LoginComponent.ctorParameters = () => [
{ type: NbAuthService },
{ type: LoginLangService },
{ type: undefined, decorators: [{ type: Inject, args: [NB_AUTH_OPTIONS,] }] },
{ type: ChangeDetectorRef },
{ type: Router }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class NamePasswordAuthStrategyOptions extends NbAuthStrategyOptions {
constructor() {
super(...arguments);
this.baseEndpoint = '/api/auth/';
this.getPublicKey = {
endpoint: 'getPublicKey',
method: 'get'
};
this.login = {
alwaysFail: false,
endpoint: 'login',
method: 'post',
redirect: {
success: '/',
failure: null
},
defaultErrors: ['未知错误!'],
defaultMessages: ['You have been successfully logged in.']
};
this.createUser = {
endpoint: 'createUser',
method: 'post',
defaultErrors: ['未知错误!']
};
this.updatePasswordForAdmin = {
endpoint: 'updatePasswordForAdmin',
method: 'patch',
defaultErrors: ['未知错误!']
};
this.register = {
alwaysFail: false,
endpoint: 'register',
method: 'post',
redirect: {
success: '/',
failure: null
},
defaultErrors: ['Something went wrong, please try again.'],
defaultMessages: ['You have been successfully registered.']
};
this.requestPass = {
endpoint: 'request-pass',
method: 'post',
redirect: {
success: '/',
failure: null
},
defaultErrors: ['Something went wrong, please try again.'],
defaultMessages: ['Reset password instructions have been sent to your email.']
};
this.resetPass = {
endpoint: 'updateUserPassword',
method: 'patch',
redirect: {
success: '/',
failure: null
},
defaultErrors: ['未知错误.'],
defaultMessages: ['Your password has been successfully changed.']
};
this.logout = {
alwaysFail: false,
endpoint: 'logout',
method: 'delete',
redirect: {
success: '/',
failure: null
},
defaultErrors: ['Something went wrong, please try again.'],
defaultMessages: ['You have been successfully logged out.']
};
this.errors = {
key: 'messager',
getter: (/**
* @param {?} module
* @param {?} res
* @param {?} options
* @return {?}
*/
(module, res, options) => [
getDeepFromObject(res.error, options.errors.key, options[module].defaultErrors)
])
};
this.messages = {
key: 'messager',
getter: (/**
* @param {?} module
* @param {?} res
* @param {?} options
* @return {?}
*/
(module, res, options) => [getDeepFromObject(res.body, options.messages.key, false)])
};
this.success = {
key: 'success',
getter: (/**
* @param {?} module
* @param {?} res
* @param {?} options
* @return {?}
*/
(module, res, options) => getDeepFromObject(res.body, options.success.key, options[module].defaultMessages))
};
}
}
/** @type {?} */
const namePasswordStrategyOptions = new NamePasswordAuthStrategyOptions();
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ResultError {
/**
* @param {?} message
*/
constructor(message) {
this.message = message;
}
}
class NamePasswordStrategyService extends NbAuthStrategy {
/**
* @param {?} http
* @param {?} route
*/
constructor(http, route) {
super();
this.http = http;
this.route = route;
this.defaultOptions = namePasswordStrategyOptions;
}
/**
* @param {?} options
* @return {?}
*/
static setup(options) {
return [NamePasswordStrategyService, options];
}
/**
* @param {?=} data
* @return {?}
*/
authenticate(data) {
/** @type {?} */
const module = 'login';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
/** @type {?} */
const requireValidToken = this.getOption(`${module}.requireValidToken`);
return this.getEncryptPassword(data.loginPassword).pipe(map((/**
* @param {?} body
* @return {?}
*/
(body) => {
body.loginID = data.loginId;
return this.http.request(method, url, { body, observe: 'response' })
.pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (this.getOption(`${module}.alwaysFail`)) {
throw this.createFailResponse(data);
}
else if (!this.getOption('success.getter')(module, res, this.options)) {
throw new ResultError(this.getOption('messages.getter')(module, res, this.options));
}
return res;
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return new NbAuthResult(true, res, this.getOption(`${module}.redirect.success`), [], this.getOption('messages.getter')(module, res, this.options));
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
})), concatAll());
}
/**
* @return {?}
*/
logout() {
/** @type {?} */
const module = 'logout';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
return of({})
.pipe(switchMap((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (!url) {
return of(res);
}
return this.http.request(method, url, { observe: 'response' });
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (this.getOption(`${module}.alwaysFail`)) {
throw this.createFailResponse();
}
return res;
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return new NbAuthResult(true, res, this.getOption(`${module}.redirect.success`), [], this.getOption('messages.getter')(module, res, this.options));
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
}
/**
* @param {?=} data
* @return {?}
*/
refreshToken(data) {
return undefined;
}
/**
* @param {?=} data
* @return {?}
*/
register(data) {
return undefined;
}
/**
* @param {?=} data
* @return {?}
*/
requestPassword(data) {
return undefined;
}
/**
* @param {?=} data
* @return {?}
*/
resetPassword(data) {
/** @type {?} */
const module = 'resetPass';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
return this.getEncryptPassword(data.loginPasswordNew + '-' + data.loginPasswordOld).pipe(map((/**
* @param {?} body
* @return {?}
*/
(body) => {
body.passwordData = body.loginPassword;
return this.http.request(method, url, { body, observe: 'response' })
.pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (this.getOption(`${module}.alwaysFail`)) {
throw this.createFailResponse(data);
}
else if (!this.getOption('success.getter')(module, res, this.options)) {
throw new ResultError(this.getOption('messages.getter')(module, res, this.options));
}
return res;
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return new NbAuthResult(true, res, this.getOption(`${module}.redirect.success`), [], this.getOption('messages.getter')(module, res, this.options));
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
})), concatAll());
}
/**
* @param {?=} data
* @return {?}
*/
createUser(data) {
/** @type {?} */
const module = 'createUser';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
return this.getEncryptPassword(data.loginPassword).pipe(map((/**
* @param {?} body
* @return {?}
*/
(body) => {
body.userName = data.userName;
body.loginID = data.loginID;
return this.http.request(method, url, { body, observe: 'response' })
.pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (this.getOption(`${module}.alwaysFail`)) {
throw this.createFailResponse(data);
}
else if (!this.getOption('success.getter')(module, res, this.options)) {
throw new ResultError(this.getOption('messages.getter')(module, res, this.options));
}
return res;
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return new NbAuthResult(true, res, this.getOption(`${module}.redirect.success`), [], this.getOption('messages.getter')(module, res, this.options));
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
})), concatAll());
}
/**
* @param {?=} data
* @return {?}
*/
updatePasswordForAdmin(data) {
/** @type {?} */
const module = 'updatePasswordForAdmin';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
return this.getEncryptPassword(data.loginPassword).pipe(map((/**
* @param {?} body
* @return {?}
*/
(body) => {
body.userID = data.userID;
return this.http.request(method, url, { body, observe: 'response' })
.pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
if (this.getOption(`${module}.alwaysFail`)) {
throw this.createFailResponse(data);
}
else if (!this.getOption('success.getter')(module, res, this.options)) {
throw new ResultError(this.getOption('messages.getter')(module, res, this.options));
}
return res;
})), map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return new NbAuthResult(true, res, this.getOption(`${module}.redirect.success`), [], this.getOption('messages.getter')(module, res, this.options));
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
})), concatAll());
}
/**
* @param {?} password
* @return {?}
*/
getEncryptPassword(password) {
/** @type {?} */
const module = 'getPublicKey';
/** @type {?} */
const method = this.getOption(`${module}.method`);
/** @type {?} */
const url = this.getActionEndpoint(module);
return this.http.request(method, url, { observe: 'response' })
.pipe(map((/**
* @param {?} res
* @return {?}
*/
(res) => {
return encryptPassword(res.body, password);
})), catchError((/**
* @param {?} res
* @return {?}
*/
(res) => {
return this.handleResponseError(res, module);
})));
/**
* @param {?} result
* @param {?} data
* @return {?}
*/
function encryptPassword(result, data) {
/** @type {?} */
let now = Date.now();
/** @type {?} */
let encrypt = new JSEncrypt();
encrypt.setPublicKey(result.data.publicPEMKey);
/** @type {?} */
let encryptPass = encrypt.encrypt(data + now);
return {
cryptoKeyID: result.data.cryptoKeyID,
utcTimestamp: now,
loginPassword: encryptPass
};
}
}
/**
* @protected
* @param {?} res
* @param {?} module
* @return {?}
*/
handleResponseError(res, module) {
/** @type {?} */
let errors = [];
if (res instanceof HttpErrorResponse) {
errors = this.getOption('errors.getter')(module, res, this.options);
}
else if (res instanceof NbAuthIllegalTokenError) {
errors.push(res.message);
}
else if (res instanceof ResultError) {
errors = res.message;
}
else {
errors.push('Something went wrong.');
}
return of(new NbAuthResult(false, res, this.getOption(`${module}.redirect.failure`), errors));
}
}
NamePasswordStrategyService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NamePasswordStrategyService.ctorParameters = () => [
{ type: HttpClient },
{ type: ActivatedRoute }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class ResetPasswordComponent {
/**
* @param {?} service
* @param {?} langService
* @param {?=} options
* @param {?=} cd
* @param {?=} router
*/
constructor(service, langService, options = {}, cd, router) {
this.service = service;
this.langService = langService;
this.options = options;
this.cd = cd;
this.router = router;
this.redirectDelay = 0;
this.showMessages = {};
this.strategy = '';
this.submitted = false;
this.errors = [];
this.messages = [];
this.user = {};
this.redirectDelay = this.getConfigValue('forms.resetPassword.redirectDelay');
this.showMessages = this.getConfigValue('forms.resetPassword.showMessages');
this.strategy = this.getConfigValue('forms.resetPassword.strategy');
}
/**
* @return {?}
*/
resetPass() {
this.errors = this.messages = [];
this.submitted = true;
this.service.resetPassword(this.strategy, this.user).subscribe((/**
* @param {?} result
* @return {?}
*/
(result) => {
this.submitted = false;
if (result.isSuccess()) {
this.messages = result.getMessages();
}
else {
this.errors = result.getErrors();
}
/** @type {?} */
const redirect = result.getRedirect();
if (redirect) {
setTimeout((/**
* @return {?}
*/
() => {
return this.router.navigateByUrl(redirect);
}), this.redirectDelay);
}
this.cd.detectChanges();
}));
}
/**
* @param {?} key
* @return {?}
*/
getConfigValue(key) {
return getDeepFromObject(this.options, key, null);
}
}
ResetPasswordComponent.decorators = [
{ type: Component, args: [{
selector: 'auth-reset-password-page',
template: "\u4FEE\u6539\u5BC6\u7801
\r\n\u8BF7\u8BBE\u7F6E\u60A8\u7684\u65B0\u5BC6\u7801
\r\n\r\n\r\n \u9519\u8BEF!
\r\n \r\n\r\n\r\n\r\n \u6210\u529F!
\r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n",
changeDetection: ChangeDetectionStrategy.OnPush,
styles: [":host .form-group:last-of-type{margin-bottom:3rem}"]
}] }
];
/** @nocollapse */
ResetPasswordComponent.ctorParameters = () => [
{ type: NbAuthService },
{ type: LoginLangService },
{ type: undefined, decorators: [{ type: Inject, args: [NB_AUTH_OPTIONS,] }] },
{ type: ChangeDetectorRef },
{ type: Router }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class LogoutComponent {
/**
* @param {?} service
* @param {?} langService
* @param {?=} options
* @param {?=} router
*/
constructor(service, langService, options = {}, router) {
this.service = service;
this.langService = langService;
this.options = options;
this.router = router;
this.redirectDelay = 0;
this.strategy = '';
this.redirectDelay = this.getConfigValue('forms.logout.redirectDelay');
this.strategy = this.getConfigValue('forms.logout.strategy');
}
/**
* @return {?}
*/
ngOnInit() {
this.logout(this.strategy);
}
/**
* @param {?} strategy
* @return {?}
*/
logout(strategy) {
this.service.logout(strategy).subscribe((/**
* @param {?} result
* @return {?}
*/
(result) => {
/** @type {?} */
const redirect = result.getRedirect();
if (redirect) {
setTimeout((/**
* @return {?}
*/
() => {
return this.router.navigateByUrl(redirect);
}), this.redirectDelay);
}
}));
}
/**
* @param {?} key
* @return {?}
*/
getConfigValue(key) {
return getDeepFromObject$1(this.options, key, null);
}
}
LogoutComponent.decorators = [
{ type: Component, args: [{
selector: 'auth-logout',
template: "\r\n",
styles: ["div{text-align:center}"]
}] }
];
/** @nocollapse */
LogoutComponent.ctorParameters = () => [
{ type: NbAuthService },
{ type: LoginLangService },
{ type: undefined, decorators: [{ type: Inject, args: [NB_AUTH_OPTIONS,] }] },
{ type: Router }
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class LoginStatusService {
constructor() {
this.subject = new Subject();
}
/**
* @param {?} status
* @return {?}
*/
changeStatus(status) {
if (this.status !== status) {
this.status = status;
this.subject.next(status);
}
}
}
LoginStatusService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
LoginStatusService.ctorParameters = () => [];
/** @enum {number} */
const LoginStatus = {
Login: 1,
Logout: 2,
};
LoginStatus[LoginStatus.Login] = 'Login';
LoginStatus[LoginStatus.Logout] = 'Logout';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
class GeAdminAuthModule {
}
GeAdminAuthModule.decorators = [
{ type: NgModule, args: [{
declarations: [
LoginComponent,
ResetPasswordComponent,
LogoutComponent
],
imports: [
CommonModule,
NbLayoutModule,
NbCardModule,
NbCheckboxModule,
NbAlertModule,
NbInputModule,
NbButtonModule,
RouterModule,
FormsModule,
TranslateModule.forRoot()
],
providers: [
NamePasswordStrategyService,
LoginStatusService,
LoginLangService
],
exports: [
LoginComponent,
ResetPasswordComponent,
LogoutComponent
]
},] }
];
export { AUTH_DEFAULT_LANG, GeAdminAuthModule, LoginComponent, LoginLangService, LoginStatus, LoginStatusService, LogoutComponent, NamePasswordAuthStrategyOptions, NamePasswordStrategyService, ResetPasswordComponent, ResultError, namePasswordStrategyOptions };
//# sourceMappingURL=ge-admin-auth.js.map