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 \u5BC6\u7801\u5E94\u8BE5\u5305\u542B \u6700\u5C0F\u957F\u5EA6 {{ getConfigValue('forms.validation.password.minLength') }} \u6700\u5927\u957F\u5EA6\r\n {{ getConfigValue('forms.validation.password.maxLength') }}\r\n \u4E2A\u5B57\u7B26\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\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
  • {{ error }}
  • \r\n
\r\n
\r\n\r\n\r\n

\u6210\u529F!

\r\n
    \r\n
  • {{ message }}
  • \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 \u5BC6\u7801\u5E94\u8BE5\u5305\u542B\r\n \u6700\u5C0F\u957F\u5EA6 {{ getConfigValue('forms.validation.password.minLength') }}\r\n \u6700\u5927\u957F\u5EA6 {{ getConfigValue('forms.validation.password.maxLength') }}\r\n \u4E2A\u5B57\u7B26\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 \u5BC6\u7801\u5E94\u8BE5\u5305\u542B\r\n \u6700\u5C0F\u957F\u5EA6 {{ getConfigValue('forms.validation.password.minLength') }}\r\n \u6700\u5927\u957F\u5EA6 {{ getConfigValue('forms.validation.password.maxLength') }}\r\n \u4E2A\u5B57\u7B26\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, 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