@rolatech/angular-account 17.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/esm2022/index.mjs +3 -0
- package/esm2022/lib/account.routes.mjs +72 -0
- package/esm2022/lib/components/avatar-update-dialog/avatar-update-dialog.component.mjs +65 -0
- package/esm2022/lib/components/forgot-password/forgot-password.component.mjs +13 -0
- package/esm2022/lib/components/login/login-wechat/login-wechat.component.mjs +42 -0
- package/esm2022/lib/components/login/login.routes.mjs +4 -0
- package/esm2022/lib/components/logout/logout.component.mjs +46 -0
- package/esm2022/lib/components/passwordreset/passwordreset.component.mjs +13 -0
- package/esm2022/lib/components/signin/signin.component.mjs +148 -0
- package/esm2022/lib/components/signup/signup.component.mjs +82 -0
- package/esm2022/lib/contant/user.mjs +7 -0
- package/esm2022/lib/pages/myaccount/email/email.component.mjs +41 -0
- package/esm2022/lib/pages/myaccount/email-verification/email-verification.component.mjs +26 -0
- package/esm2022/lib/pages/myaccount/gender/gender.component.mjs +46 -0
- package/esm2022/lib/pages/myaccount/home/home.component.mjs +22 -0
- package/esm2022/lib/pages/myaccount/personal-info/info.component.mjs +45 -0
- package/esm2022/lib/pages/myaccount/personal-info/profile/profile.component.mjs +41 -0
- package/esm2022/lib/pages/myaccount/personal-info/username/username.component.mjs +41 -0
- package/esm2022/lib/pages/myaccount/phone/phone.component.mjs +70 -0
- package/esm2022/lib/pages/myaccount/security/security-faceid/security-faceid.component.mjs +13 -0
- package/esm2022/lib/pages/myaccount/security/security-index/security-index.component.mjs +64 -0
- package/esm2022/lib/pages/myaccount/security/security-password/security-password.component.mjs +50 -0
- package/esm2022/lib/pages/myaccount/security/security-verification/security-verification.component.mjs +88 -0
- package/esm2022/lib/pages/myaccount/security/security.routes.mjs +20 -0
- package/esm2022/lib/services/wechat-login.service.mjs +16 -0
- package/esm2022/provider.mjs +14 -0
- package/esm2022/rolatech-angular-account.mjs +5 -0
- package/fesm2022/rolatech-angular-account-email-verification.component-4RClhLI4.mjs +29 -0
- package/fesm2022/rolatech-angular-account-email-verification.component-4RClhLI4.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-email.component-oRTdxJLo.mjs +44 -0
- package/fesm2022/rolatech-angular-account-email.component-oRTdxJLo.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-gender.component-egCF_zI_.mjs +49 -0
- package/fesm2022/rolatech-angular-account-gender.component-egCF_zI_.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-home.component-B2Rmr4Iw.mjs +25 -0
- package/fesm2022/rolatech-angular-account-home.component-B2Rmr4Iw.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-info.component-CMWD6CDB.mjs +107 -0
- package/fesm2022/rolatech-angular-account-info.component-CMWD6CDB.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-login.routes-NPLzDeHN.mjs +56 -0
- package/fesm2022/rolatech-angular-account-login.routes-NPLzDeHN.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-phone.component-CJ8DeuFr.mjs +73 -0
- package/fesm2022/rolatech-angular-account-phone.component-CJ8DeuFr.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-profile.component-BN_pBKMU.mjs +44 -0
- package/fesm2022/rolatech-angular-account-profile.component-BN_pBKMU.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs +380 -0
- package/fesm2022/rolatech-angular-account-rolatech-angular-account-Dqz2XIdy.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-security.routes-S3BzviKf.mjs +206 -0
- package/fesm2022/rolatech-angular-account-security.routes-S3BzviKf.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-user-CK_zEFn_.mjs +9 -0
- package/fesm2022/rolatech-angular-account-user-CK_zEFn_.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account-username.component-C6pM8g84.mjs +44 -0
- package/fesm2022/rolatech-angular-account-username.component-C6pM8g84.mjs.map +1 -0
- package/fesm2022/rolatech-angular-account.mjs +15 -0
- package/fesm2022/rolatech-angular-account.mjs.map +1 -0
- package/index.d.ts +2 -0
- package/lib/account.routes.d.ts +3 -0
- package/lib/components/avatar-update-dialog/avatar-update-dialog.component.d.ts +23 -0
- package/lib/components/forgot-password/forgot-password.component.d.ts +8 -0
- package/lib/components/login/login-wechat/login-wechat.component.d.ts +15 -0
- package/lib/components/login/login.routes.d.ts +3 -0
- package/lib/components/logout/logout.component.d.ts +19 -0
- package/lib/components/passwordreset/passwordreset.component.d.ts +8 -0
- package/lib/components/signin/signin.component.d.ts +39 -0
- package/lib/components/signup/signup.component.d.ts +21 -0
- package/lib/contant/user.d.ts +5 -0
- package/lib/pages/myaccount/email/email.component.d.ts +14 -0
- package/lib/pages/myaccount/email-verification/email-verification.component.d.ts +9 -0
- package/lib/pages/myaccount/gender/gender.component.d.ts +14 -0
- package/lib/pages/myaccount/home/home.component.d.ts +12 -0
- package/lib/pages/myaccount/personal-info/info.component.d.ts +16 -0
- package/lib/pages/myaccount/personal-info/profile/profile.component.d.ts +14 -0
- package/lib/pages/myaccount/personal-info/username/username.component.d.ts +14 -0
- package/lib/pages/myaccount/phone/phone.component.d.ts +19 -0
- package/lib/pages/myaccount/security/security-faceid/security-faceid.component.d.ts +5 -0
- package/lib/pages/myaccount/security/security-index/security-index.component.d.ts +18 -0
- package/lib/pages/myaccount/security/security-password/security-password.component.d.ts +16 -0
- package/lib/pages/myaccount/security/security-verification/security-verification.component.d.ts +24 -0
- package/lib/pages/myaccount/security/security.routes.d.ts +3 -0
- package/lib/services/wechat-login.service.d.ts +8 -0
- package/package.json +31 -0
- package/provider.d.ts +2 -0
- package/themes/_default.scss +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './lib/account.routes';
|
|
2
|
+
export * from './provider';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2FjY291bnQucm91dGVzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXInO1xuIl19
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { AuthGuard, ForbiddenComponent, UnauthorizedComponent } from '@rolatech/angular-auth';
|
|
2
|
+
import { ForgotPasswordComponent } from './components/forgot-password/forgot-password.component';
|
|
3
|
+
import { LogoutComponent } from './components/logout/logout.component';
|
|
4
|
+
import { PasswordresetComponent } from './components/passwordreset/passwordreset.component';
|
|
5
|
+
import { SigninComponent } from './components/signin/signin.component';
|
|
6
|
+
import { SignupComponent } from './components/signup/signup.component';
|
|
7
|
+
export const accountRoutes = [
|
|
8
|
+
{
|
|
9
|
+
path: '',
|
|
10
|
+
pathMatch: 'full',
|
|
11
|
+
redirectTo: 'signin',
|
|
12
|
+
},
|
|
13
|
+
{ path: 'signin', canActivate: [AuthGuard], component: SigninComponent, data: { title: 'Signin' } },
|
|
14
|
+
{ path: 'signup', component: SignupComponent, data: { title: 'Signup' } },
|
|
15
|
+
{ path: 'logout', component: LogoutComponent },
|
|
16
|
+
{ path: 'login', loadChildren: () => import('./components/login/login.routes') },
|
|
17
|
+
{
|
|
18
|
+
path: 'passwordreset/:token',
|
|
19
|
+
component: PasswordresetComponent,
|
|
20
|
+
data: { title: 'Password Reset' },
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
path: 'forgot',
|
|
24
|
+
component: ForgotPasswordComponent,
|
|
25
|
+
data: { title: 'Forgot Password' },
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
path: 'unauthorized',
|
|
29
|
+
component: UnauthorizedComponent,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
path: 'forbidden',
|
|
33
|
+
component: ForbiddenComponent,
|
|
34
|
+
},
|
|
35
|
+
];
|
|
36
|
+
export const myaccountRoutes = [
|
|
37
|
+
{
|
|
38
|
+
path: '',
|
|
39
|
+
loadComponent: () => import('./pages/myaccount/home/home.component').then((c) => c.HomeComponent),
|
|
40
|
+
data: { title: '首页' },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
path: 'personal-info',
|
|
44
|
+
loadComponent: () => import('./pages/myaccount/personal-info/info.component').then((c) => c.InfoComponent),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
path: 'profile',
|
|
48
|
+
loadComponent: () => import('./pages/myaccount/personal-info/profile/profile.component').then((c) => c.ProfileComponent),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
path: 'username',
|
|
52
|
+
loadComponent: () => import('./pages/myaccount/personal-info/username/username.component').then((c) => c.UsernameComponent),
|
|
53
|
+
},
|
|
54
|
+
{ path: 'gender', loadComponent: () => import('./pages/myaccount/gender/gender.component').then((c) => c.GenderComponent) },
|
|
55
|
+
{ path: 'email', loadComponent: () => import('./pages/myaccount/email/email.component').then((c) => c.EmailComponent) },
|
|
56
|
+
{
|
|
57
|
+
path: 'email-verification/:id',
|
|
58
|
+
loadComponent: () => import('./pages/myaccount/email-verification/email-verification.component').then((c) => c.EmailVerificationComponent),
|
|
59
|
+
},
|
|
60
|
+
{ path: 'phone', loadComponent: () => import('./pages/myaccount/phone/phone.component').then((c) => c.PhoneComponent) },
|
|
61
|
+
{
|
|
62
|
+
path: 'security',
|
|
63
|
+
loadChildren: () => import('./pages/myaccount/security/security.routes'),
|
|
64
|
+
data: { title: 'Security' },
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
path: 'notifications',
|
|
68
|
+
loadChildren: () => import('@rolatech/angular-notification').then((m) => m.notificationRoutes),
|
|
69
|
+
data: { title: '通知中心' },
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5yb3V0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL2FjY291bnQucm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV2RSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQVc7SUFDbkM7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFVBQVUsRUFBRSxRQUFRO0tBQ3JCO0lBQ0QsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO0lBQ25HLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtJQUN6RSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtJQUM5QyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO0lBQ2hGO1FBQ0Us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RixJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0tBQ3hCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoR3VhcmQsIEZvcmJpZGRlbkNvbXBvbmVudCwgVW5hdXRob3JpemVkQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2dvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9nb3V0L2xvZ291dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFzc3dvcmRyZXNldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wYXNzd29yZHJlc2V0L3Bhc3N3b3JkcmVzZXQuY29tcG9uZW50JztcbmltcG9ydCB7IFNpZ25pbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zaWduaW4vc2lnbmluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWdudXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2lnbnVwL3NpZ251cC5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgYWNjb3VudFJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJycsXG4gICAgcGF0aE1hdGNoOiAnZnVsbCcsXG4gICAgcmVkaXJlY3RUbzogJ3NpZ25pbicsXG4gIH0sXG4gIHsgcGF0aDogJ3NpZ25pbicsIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkXSwgY29tcG9uZW50OiBTaWduaW5Db21wb25lbnQsIGRhdGE6IHsgdGl0bGU6ICdTaWduaW4nIH0gfSxcbiAgeyBwYXRoOiAnc2lnbnVwJywgY29tcG9uZW50OiBTaWdudXBDb21wb25lbnQsIGRhdGE6IHsgdGl0bGU6ICdTaWdudXAnIH0gfSxcbiAgeyBwYXRoOiAnbG9nb3V0JywgY29tcG9uZW50OiBMb2dvdXRDb21wb25lbnQgfSxcbiAgeyBwYXRoOiAnbG9naW4nLCBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLnJvdXRlcycpIH0sXG4gIHtcbiAgICBwYXRoOiAncGFzc3dvcmRyZXNldC86dG9rZW4nLFxuICAgIGNvbXBvbmVudDogUGFzc3dvcmRyZXNldENvbXBvbmVudCxcbiAgICBkYXRhOiB7IHRpdGxlOiAnUGFzc3dvcmQgUmVzZXQnIH0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAnZm9yZ290JyxcbiAgICBjb21wb25lbnQ6IEZvcmdvdFBhc3N3b3JkQ29tcG9uZW50LFxuICAgIGRhdGE6IHsgdGl0bGU6ICdGb3Jnb3QgUGFzc3dvcmQnIH0sXG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndW5hdXRob3JpemVkJyxcbiAgICBjb21wb25lbnQ6IFVuYXV0aG9yaXplZENvbXBvbmVudCxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdmb3JiaWRkZW4nLFxuICAgIGNvbXBvbmVudDogRm9yYmlkZGVuQ29tcG9uZW50LFxuICB9LFxuXTtcbmV4cG9ydCBjb25zdCBteWFjY291bnRSb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9wYWdlcy9teWFjY291bnQvaG9tZS9ob21lLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuSG9tZUNvbXBvbmVudCksXG4gICAgZGF0YTogeyB0aXRsZTogJ+mmlumhtScgfSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdwZXJzb25hbC1pbmZvJyxcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcGFnZXMvbXlhY2NvdW50L3BlcnNvbmFsLWluZm8vaW5mby5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkluZm9Db21wb25lbnQpLFxuICB9LFxuICB7XG4gICAgcGF0aDogJ3Byb2ZpbGUnLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9wYWdlcy9teWFjY291bnQvcGVyc29uYWwtaW5mby9wcm9maWxlL3Byb2ZpbGUuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5Qcm9maWxlQ29tcG9uZW50KSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICd1c2VybmFtZScsXG4gICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3BhZ2VzL215YWNjb3VudC9wZXJzb25hbC1pbmZvL3VzZXJuYW1lL3VzZXJuYW1lLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuVXNlcm5hbWVDb21wb25lbnQpLFxuICB9LFxuICB7IHBhdGg6ICdnZW5kZXInLCBsb2FkQ29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vcGFnZXMvbXlhY2NvdW50L2dlbmRlci9nZW5kZXIuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5HZW5kZXJDb21wb25lbnQpIH0sXG4gIHsgcGF0aDogJ2VtYWlsJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3BhZ2VzL215YWNjb3VudC9lbWFpbC9lbWFpbC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkVtYWlsQ29tcG9uZW50KSB9LFxuICB7XG4gICAgcGF0aDogJ2VtYWlsLXZlcmlmaWNhdGlvbi86aWQnLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICBpbXBvcnQoJy4vcGFnZXMvbXlhY2NvdW50L2VtYWlsLXZlcmlmaWNhdGlvbi9lbWFpbC12ZXJpZmljYXRpb24uY29tcG9uZW50JykudGhlbigoYykgPT4gYy5FbWFpbFZlcmlmaWNhdGlvbkNvbXBvbmVudCksXG4gIH0sXG4gIHsgcGF0aDogJ3Bob25lJywgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL3BhZ2VzL215YWNjb3VudC9waG9uZS9waG9uZS5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLlBob25lQ29tcG9uZW50KSB9LFxuICB7XG4gICAgcGF0aDogJ3NlY3VyaXR5JyxcbiAgICBsb2FkQ2hpbGRyZW46ICgpID0+IGltcG9ydCgnLi9wYWdlcy9teWFjY291bnQvc2VjdXJpdHkvc2VjdXJpdHkucm91dGVzJyksXG4gICAgZGF0YTogeyB0aXRsZTogJ1NlY3VyaXR5JyB9LFxuICB9LFxuICB7XG4gICAgcGF0aDogJ25vdGlmaWNhdGlvbnMnLFxuICAgIGxvYWRDaGlsZHJlbjogKCkgPT4gaW1wb3J0KCdAcm9sYXRlY2gvYW5ndWxhci1ub3RpZmljYXRpb24nKS50aGVuKChtKSA9PiBtLm5vdGlmaWNhdGlvblJvdXRlcyksXG4gICAgZGF0YTogeyB0aXRsZTogJ+mAmuefpeS4reW/gycgfSxcbiAgfSxcbl07XG4iXX0=
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Component, EventEmitter, Inject, Output, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { AuthUserService } from '@rolatech/angular-auth';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { SnackBarService } from '@rolatech/angular-services';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/material/button";
|
|
10
|
+
import * as i2 from "@angular/material/icon";
|
|
11
|
+
export class AvatarUpdateDialogComponent {
|
|
12
|
+
constructor(data) {
|
|
13
|
+
this.data = data;
|
|
14
|
+
this.dialogRef = inject(MatDialogRef);
|
|
15
|
+
this.authUserService = inject(AuthUserService);
|
|
16
|
+
this.snackBarService = inject(SnackBarService);
|
|
17
|
+
this.avatar = '';
|
|
18
|
+
this.save = new EventEmitter();
|
|
19
|
+
this.avatar = data.avatar;
|
|
20
|
+
}
|
|
21
|
+
cancel() {
|
|
22
|
+
this.dialogRef.close();
|
|
23
|
+
}
|
|
24
|
+
onSave() {
|
|
25
|
+
this.save.emit(this.avatar);
|
|
26
|
+
}
|
|
27
|
+
onUpload(event) {
|
|
28
|
+
const file = event.target.files[0];
|
|
29
|
+
if (file) {
|
|
30
|
+
const reader = new FileReader();
|
|
31
|
+
reader.readAsDataURL(file);
|
|
32
|
+
reader.onload = () => {
|
|
33
|
+
this.avatar = reader.result;
|
|
34
|
+
// this.isUploading = true;
|
|
35
|
+
const formData = new FormData();
|
|
36
|
+
formData.append('file', file);
|
|
37
|
+
this.authUserService.uploadAvatar(formData).subscribe({
|
|
38
|
+
next: (res) => {
|
|
39
|
+
this.snackBarService.open('更新成功');
|
|
40
|
+
// this.isUploading = false;
|
|
41
|
+
},
|
|
42
|
+
error: (e) => {
|
|
43
|
+
// this.isUploading = false;
|
|
44
|
+
// this.snackBar.open('上传失败: ' + e.message);
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
reader.onerror = (error) => {
|
|
49
|
+
// this.isUploading = false;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AvatarUpdateDialogComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: AvatarUpdateDialogComponent, isStandalone: true, selector: "rolatech-account-avatar-update-dialog", outputs: { save: "save" }, ngImport: i0, template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
55
|
+
}
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: AvatarUpdateDialogComponent, decorators: [{
|
|
57
|
+
type: Component,
|
|
58
|
+
args: [{ selector: 'rolatech-account-avatar-update-dialog', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: "<div class=\"flex flex-col p-3 max-w-[500px] mx-auto\">\n <div class=\"text-xl font-bold p-3\">\u4FEE\u6539\u5934\u50CF</div>\n <!-- <div class=\"w-[256px] h-[256px] mx-auto flex justify-center items-center\">\n <img [src]=\"avatar\" />\n </div> -->\n <div class=\"px-3 py-8\">\n <div\n class=\"bg-orange-600 w-[256px] h-[256px] rounded-full cursor-pointer hover:outline-gray-200 outline outline-transparent outline-4\"\n >\n @if (avatar) {\n <div class=\"w-[256px] h-[256px]\">\n <img [src]=\"avatar\" class=\"w-[256px] h-[256px] rounded-full object-cover\" />\n </div>\n }\n </div>\n </div>\n\n <!-- <div class=\"p-3 flex justify-end items-center gap-3\">\n <button mat-button (click)=\"cancel()\">\u53D6\u6D88</button>\n <button mat-flat-button color=\"primary\" (click)=\"onSave()\">\u4FDD\u5B58</button>\n </div> -->\n <div class=\"py-3\">\n <input style=\"display: none\" type=\"file\" accept=\"image/*\" (change)=\"onUpload($event)\" #fileInput />\n <button mat-flat-button (click)=\"fileInput.click()\">\n <mat-icon>edit</mat-icon>\n <span>\u66F4\u6362\u5934\u50CF</span>\n </button>\n </div>\n</div>\n" }]
|
|
59
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
60
|
+
type: Inject,
|
|
61
|
+
args: [MAT_DIALOG_DATA]
|
|
62
|
+
}] }], propDecorators: { save: [{
|
|
63
|
+
type: Output
|
|
64
|
+
}] } });
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXVwZGF0ZS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9jb21wb25lbnRzL2F2YXRhci11cGRhdGUtZGlhbG9nL2F2YXRhci11cGRhdGUtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9hdmF0YXItdXBkYXRlLWRpYWxvZy9hdmF0YXItdXBkYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFTN0QsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxZQUE0QyxJQUF3QjtRQUF4QixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQU5wRSxjQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLG9CQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFDLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFDUCxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsUUFBUSxDQUFDLEtBQVU7UUFDakIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQixNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUM1QiwyQkFBMkI7Z0JBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUU5QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ3BELElBQUksRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO3dCQUNqQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDbEMsNEJBQTRCO29CQUM5QixDQUFDO29CQUNELEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUNYLDRCQUE0Qjt3QkFDNUIsNENBQTRDO29CQUM5QyxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDekIsNEJBQTRCO1lBQzlCLENBQUMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOzhHQTNDVSwyQkFBMkIsa0JBT2xCLGVBQWU7a0dBUHhCLDJCQUEyQiw0SENmeEMsNHFDQTZCQSx5RERsQlksWUFBWSw4QkFBRSxlQUFlLDJOQUFFLGFBQWE7OzJGQUkzQywyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsdUNBQXVDLGNBQ3JDLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDOzswQkFXMUMsTUFBTTsyQkFBQyxlQUFlO3lDQUZ6QixJQUFJO3NCQUFiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPdXRwdXQsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtYXZhdGFyLXVwZGF0ZS1kaWFsb2cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLXVwZGF0ZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYXZhdGFyLXVwZGF0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJVcGRhdGVEaWFsb2dDb21wb25lbnQge1xuICBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmKTtcbiAgYXV0aFVzZXJTZXJ2aWNlID0gaW5qZWN0KEF1dGhVc2VyU2VydmljZSk7XG4gIHNuYWNrQmFyU2VydmljZSA9IGluamVjdChTbmFja0JhclNlcnZpY2UpO1xuICBhdmF0YXI6IGFueSA9ICcnO1xuICBAT3V0cHV0KCkgc2F2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IHsgYXZhdGFyOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuYXZhdGFyID0gZGF0YS5hdmF0YXI7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuICBvblNhdmUoKSB7XG4gICAgdGhpcy5zYXZlLmVtaXQodGhpcy5hdmF0YXIpO1xuICB9XG4gIG9uVXBsb2FkKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGlmIChmaWxlKSB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmF2YXRhciA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICAgIC8vIHRoaXMuaXNVcGxvYWRpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcblxuICAgICAgICB0aGlzLmF1dGhVc2VyU2VydmljZS51cGxvYWRBdmF0YXIoZm9ybURhdGEpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKCfmm7TmlrDmiJDlip8nKTtcbiAgICAgICAgICAgIC8vIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICAgICAgLy8gdGhpcy5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gdGhpcy5zbmFja0Jhci5vcGVuKCfkuIrkvKDlpLHotKU6ICcgKyBlLm1lc3NhZ2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBwLTMgbWF4LXctWzUwMHB4XSBteC1hdXRvXCI+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtYm9sZCBwLTNcIj7kv67mlLnlpLTlg488L2Rpdj5cbiAgPCEtLSA8ZGl2IGNsYXNzPVwidy1bMjU2cHhdIGgtWzI1NnB4XSBteC1hdXRvIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgPGltZyBbc3JjXT1cImF2YXRhclwiIC8+XG4gIDwvZGl2PiAtLT5cbiAgPGRpdiBjbGFzcz1cInB4LTMgcHktOFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctb3JhbmdlLTYwMCB3LVsyNTZweF0gaC1bMjU2cHhdIHJvdW5kZWQtZnVsbCBjdXJzb3ItcG9pbnRlciBob3ZlcjpvdXRsaW5lLWdyYXktMjAwIG91dGxpbmUgb3V0bGluZS10cmFuc3BhcmVudCBvdXRsaW5lLTRcIlxuICAgID5cbiAgICAgIEBpZiAoYXZhdGFyKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsyNTZweF0gaC1bMjU2cHhdXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclwiIGNsYXNzPVwidy1bMjU2cHhdIGgtWzI1NnB4XSByb3VuZGVkLWZ1bGwgb2JqZWN0LWNvdmVyXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gPGRpdiBjbGFzcz1cInAtMyBmbGV4IGp1c3RpZnktZW5kIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIj7lj5bmtog8L2J1dHRvbj5cbiAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25TYXZlKClcIj7kv53lrZg8L2J1dHRvbj5cbiAgPC9kaXY+IC0tPlxuICA8ZGl2IGNsYXNzPVwicHktM1wiPlxuICAgIDxpbnB1dCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiAoY2hhbmdlKT1cIm9uVXBsb2FkKCRldmVudClcIiAjZmlsZUlucHV0IC8+XG4gICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgICA8c3Bhbj7mm7TmjaLlpLTlg488L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ForgotPasswordComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() { }
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: ForgotPasswordComponent, isStandalone: true, selector: "rolatech-account-forgot-password", ngImport: i0, template: "<p>forgot-password works!</p>\n", styles: [""] }); }
|
|
8
|
+
}
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
10
|
+
type: Component,
|
|
11
|
+
args: [{ selector: 'rolatech-account-forgot-password', standalone: true, template: "<p>forgot-password works!</p>\n" }]
|
|
12
|
+
}], ctorParameters: () => [] });
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9mb3Jnb3QtcGFzc3dvcmQvZm9yZ290LXBhc3N3b3JkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBUWxELE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsZ0JBQWUsQ0FBQztJQUVoQixRQUFRLEtBQVUsQ0FBQzs4R0FIUix1QkFBdUI7a0dBQXZCLHVCQUF1Qiw0RkNScEMsaUNBQ0E7OzJGRE9hLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxrQ0FBa0MsY0FHaEMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtZm9yZ290LXBhc3N3b3JkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZvcmdvdC1wYXNzd29yZC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBGb3Jnb3RQYXNzd29yZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG59XG4iLCI8cD5mb3Jnb3QtcGFzc3dvcmQgd29ya3MhPC9wPlxuIl19
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Component, PLATFORM_ID, inject } from '@angular/core';
|
|
2
|
+
import { AuthService } from '@rolatech/angular-auth';
|
|
3
|
+
import { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';
|
|
4
|
+
import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
|
|
5
|
+
import { WeChatLoginService } from '../../../services/wechat-login.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class LoginWechatComponent extends BaseComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.authService = inject(AuthService);
|
|
11
|
+
this.environment = inject(APP_CONFIG);
|
|
12
|
+
this.platformId = inject(PLATFORM_ID);
|
|
13
|
+
this.wechtLoginService = inject(WeChatLoginService);
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
this.route.queryParams.subscribe({
|
|
17
|
+
next: (params) => {
|
|
18
|
+
this.wechatLogin(params.code, params.state);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
wechatLogin(code, state) {
|
|
23
|
+
window.parent.postMessage({ code: 23 }, this.environment.accountsUrl);
|
|
24
|
+
this.authService.wechatLogin(code, state).subscribe({
|
|
25
|
+
next: (res) => {
|
|
26
|
+
if (res.name) {
|
|
27
|
+
window.parent.postMessage({ code: 200 }, this.environment.accountsUrl);
|
|
28
|
+
}
|
|
29
|
+
// if (isPlatformBrowser(this.platformId) && res.code === 200) {
|
|
30
|
+
// window.parent.postMessage({ code: res.code }, this.environment.myaccountUrl);
|
|
31
|
+
// }
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LoginWechatComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
36
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LoginWechatComponent, isStandalone: true, selector: "rolatech-account-login-wechat", usesInheritance: true, ngImport: i0, template: "<div>loading...</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LoginWechatComponent, decorators: [{
|
|
39
|
+
type: Component,
|
|
40
|
+
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-login-wechat', template: "<div>loading...</div>\n" }]
|
|
41
|
+
}] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4td2VjaGF0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi13ZWNoYXQvbG9naW4td2VjaGF0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dpbi9sb2dpbi13ZWNoYXQvbG9naW4td2VjaGF0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQVUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFTNUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUFQdkQ7O1FBUUUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxzQkFBaUIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztLQXVCaEQ7SUFyQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDbEQsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDekUsQ0FBQztnQkFDRCxnRUFBZ0U7Z0JBQ2hFLGtGQUFrRjtnQkFDbEYsSUFBSTtZQUNOLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixnSENkakMseUJBQ0EseUREUVksbUJBQW1CLDhCQUFFLHVCQUF1Qjs7MkZBSzNDLG9CQUFvQjtrQkFQaEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxZQUM3QywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgUExBVEZPUk1fSUQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1hdXRoJztcbmltcG9ydCB7IEFQUF9DT05GSUcsIEFuZ3VsYXJDb21tb25Nb2R1bGUgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21tb24nO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudHNNb2R1bGUsIEJhc2VDb21wb25lbnQgfSBmcm9tICdAcm9sYXRlY2gvYW5ndWxhci1jb21wb25lbnRzJztcbmltcG9ydCB7IFdlQ2hhdExvZ2luU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3dlY2hhdC1sb2dpbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZV0sXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC1sb2dpbi13ZWNoYXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9naW4td2VjaGF0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9naW4td2VjaGF0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExvZ2luV2VjaGF0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICB3ZWNodExvZ2luU2VydmljZSA9IGluamVjdChXZUNoYXRMb2dpblNlcnZpY2UpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLndlY2hhdExvZ2luKHBhcmFtcy5jb2RlLCBwYXJhbXMuc3RhdGUpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICB3ZWNoYXRMb2dpbihjb2RlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgY29kZTogMjMgfSwgdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCk7XG5cbiAgICB0aGlzLmF1dGhTZXJ2aWNlLndlY2hhdExvZ2luKGNvZGUsIHN0YXRlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLm5hbWUpIHtcbiAgICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgY29kZTogMjAwIH0sIHRoaXMuZW52aXJvbm1lbnQuYWNjb3VudHNVcmwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHJlcy5jb2RlID09PSAyMDApIHtcbiAgICAgICAgLy8gICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsgY29kZTogcmVzLmNvZGUgfSwgdGhpcy5lbnZpcm9ubWVudC5teWFjY291bnRVcmwpO1xuICAgICAgICAvLyB9XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2PmxvYWRpbmcuLi48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LoginWechatComponent } from './login-wechat/login-wechat.component';
|
|
2
|
+
const loginRoutes = [{ path: '', component: LoginWechatComponent }];
|
|
3
|
+
export default loginRoutes;
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4ucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLWFjY291bnQvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2xvZ2luLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUU3RSxNQUFNLFdBQVcsR0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLGVBQWUsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvZ2luV2VjaGF0Q29tcG9uZW50IH0gZnJvbSAnLi9sb2dpbi13ZWNoYXQvbG9naW4td2VjaGF0LmNvbXBvbmVudCc7XG5cbmNvbnN0IGxvZ2luUm91dGVzOiBSb3V0ZXMgPSBbeyBwYXRoOiAnJywgY29tcG9uZW50OiBMb2dpbldlY2hhdENvbXBvbmVudCB9XTtcbmV4cG9ydCBkZWZhdWx0IGxvZ2luUm91dGVzO1xuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Component, inject, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
4
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
|
+
import { AuthService } from '@rolatech/angular-auth';
|
|
6
|
+
import { APP_CONFIG, AngularCommonModule } from '@rolatech/angular-common';
|
|
7
|
+
import { AngularComponentsModule } from '@rolatech/angular-components';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class LogoutComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.service = '';
|
|
12
|
+
this.continue = '';
|
|
13
|
+
this.environment = inject(APP_CONFIG);
|
|
14
|
+
this.platformId = inject(PLATFORM_ID);
|
|
15
|
+
this.route = inject(ActivatedRoute);
|
|
16
|
+
this.router = inject(Router);
|
|
17
|
+
this.authService = inject(AuthService);
|
|
18
|
+
this.snackBar = inject(MatSnackBar);
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
this.service = this.route.snapshot.queryParams['service'] || 'www';
|
|
22
|
+
this.continue = this.route.snapshot.queryParams['continue'] || '/';
|
|
23
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
24
|
+
this.logout();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
logout() {
|
|
28
|
+
this.authService.logout().subscribe({
|
|
29
|
+
next: (res) => {
|
|
30
|
+
this.router.navigate(['/signin'], {
|
|
31
|
+
queryParams: { continue: this.continue },
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
error: (error) => {
|
|
35
|
+
this.snackBar.open(error.message);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LogoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LogoutComponent, isStandalone: true, selector: "rolatech-account-logout", ngImport: i0, template: "<p>Please waiting...</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "ngmodule", type: AngularComponentsModule }] }); }
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LogoutComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-logout', template: "<p>Please waiting...</p>\n" }]
|
|
45
|
+
}] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nb3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dvdXQvbG9nb3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9sb2dvdXQvbG9nb3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVV2RSxNQUFNLE9BQU8sZUFBZTtJQVA1QjtRQVFFLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQXFCaEM7SUFuQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDbkUsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDbEMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRTtvQkFDaEMsV0FBVyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7aUJBQ3pDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBNUJVLGVBQWU7a0dBQWYsZUFBZSxtRkNoQjVCLDRCQUNBLHlERFVZLG1CQUFtQiw4QkFBRSx1QkFBdUI7OzJGQUszQyxlQUFlO2tCQVAzQixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLFlBQzdDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBBUFBfQ09ORklHLCBBbmd1bGFyQ29tbW9uTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBtYXAsIHRha2UgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtBbmd1bGFyQ29tbW9uTW9kdWxlLCBBbmd1bGFyQ29tcG9uZW50c01vZHVsZV0sXG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC1sb2dvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9nb3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbG9nb3V0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExvZ291dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlcnZpY2UgPSAnJztcbiAgY29udGludWUgPSAnJztcbiAgZW52aXJvbm1lbnQgPSBpbmplY3QoQVBQX0NPTkZJRyk7XG4gIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHNuYWNrQmFyID0gaW5qZWN0KE1hdFNuYWNrQmFyKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydzZXJ2aWNlJ10gfHwgJ3d3dyc7XG4gICAgdGhpcy5jb250aW51ZSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXNbJ2NvbnRpbnVlJ10gfHwgJy8nO1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgIH1cbiAgfVxuICBsb2dvdXQoKSB7XG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dvdXQoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9zaWduaW4nXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGNvbnRpbnVlOiB0aGlzLmNvbnRpbnVlIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPHA+UGxlYXNlIHdhaXRpbmcuLi48L3A+XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PasswordresetComponent {
|
|
4
|
+
constructor() { }
|
|
5
|
+
ngOnInit() { }
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PasswordresetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: PasswordresetComponent, isStandalone: true, selector: "rolatech-account-passwordreset", ngImport: i0, template: "<p>passwordreset works!</p>\n", styles: [""] }); }
|
|
8
|
+
}
|
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: PasswordresetComponent, decorators: [{
|
|
10
|
+
type: Component,
|
|
11
|
+
args: [{ selector: 'rolatech-account-passwordreset', standalone: true, template: "<p>passwordreset works!</p>\n" }]
|
|
12
|
+
}], ctorParameters: () => [] });
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmRyZXNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjb3VudC9zcmMvbGliL2NvbXBvbmVudHMvcGFzc3dvcmRyZXNldC9wYXNzd29yZHJlc2V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZHJlc2V0L3Bhc3N3b3JkcmVzZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFRbEQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBVSxDQUFDOzhHQUhSLHNCQUFzQjtrR0FBdEIsc0JBQXNCLDBGQ1JuQywrQkFDQTs7MkZET2Esc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLGdDQUFnQyxjQUc5QixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncm9sYXRlY2gtYWNjb3VudC1wYXNzd29yZHJlc2V0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3N3b3JkcmVzZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzd29yZHJlc2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFBhc3N3b3JkcmVzZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxufVxuIiwiPHA+cGFzc3dvcmRyZXNldCB3b3JrcyE8L3A+XG4iXX0=
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
2
|
+
import { Component, HostListener, inject, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
4
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
|
+
import { AngularCommonModule, APP_CONFIG } from '@rolatech/angular-common';
|
|
6
|
+
import { AngularComponentsModule, BaseComponent } from '@rolatech/angular-components';
|
|
7
|
+
import { AuthService, AuthUserService } from '@rolatech/angular-auth';
|
|
8
|
+
import { WeChatLoginService } from '../../services/wechat-login.service';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common";
|
|
11
|
+
import * as i2 from "@angular/forms";
|
|
12
|
+
import * as i3 from "@angular/material/form-field";
|
|
13
|
+
import * as i4 from "@angular/material/input";
|
|
14
|
+
import * as i5 from "@angular/material/tabs";
|
|
15
|
+
export class SigninComponent extends BaseComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.continue = '';
|
|
19
|
+
this.environment = inject(APP_CONFIG);
|
|
20
|
+
this.platformId = inject(PLATFORM_ID);
|
|
21
|
+
this.formBuilder = inject(FormBuilder);
|
|
22
|
+
this.authService = inject(AuthService);
|
|
23
|
+
this.authUserService = inject(AuthUserService);
|
|
24
|
+
this.wechtLoginService = inject(WeChatLoginService);
|
|
25
|
+
this.tabIndex = 0;
|
|
26
|
+
this.countDown = false;
|
|
27
|
+
this.countDownTime = 60;
|
|
28
|
+
this.showButtonText = '发送验证码';
|
|
29
|
+
this.appid = 'wx567acbea73439828';
|
|
30
|
+
this.state = 'add';
|
|
31
|
+
this.sanitizer = inject(DomSanitizer);
|
|
32
|
+
this.baseUrl = 'https://open.weixin.qq.com/connect/qrconnect';
|
|
33
|
+
}
|
|
34
|
+
onLogin(event) {
|
|
35
|
+
if (event.origin !== window.location.origin || /react-devtools/gi.test(event.data.source)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (event.origin === this.environment.accountsUrl && event.data.code === 200) {
|
|
39
|
+
window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
ngOnInit() {
|
|
43
|
+
this.titleService.setTitle('账号登录 - 拼小课');
|
|
44
|
+
this.passrodForm = this.formBuilder.group({
|
|
45
|
+
account: [null, Validators.required],
|
|
46
|
+
password: [null, Validators.required],
|
|
47
|
+
});
|
|
48
|
+
this.codeForm = this.formBuilder.group({
|
|
49
|
+
phone: [null, [Validators.required, Validators.pattern('1(3|4|5|6|7|8|9)\\d{9}')]],
|
|
50
|
+
code: [null, Validators.required],
|
|
51
|
+
});
|
|
52
|
+
this.continue = this.route.snapshot.queryParams['continue'] || '/';
|
|
53
|
+
}
|
|
54
|
+
get form() {
|
|
55
|
+
return this.tabIndex === 0 ? this.passrodForm.controls : this.codeForm.controls;
|
|
56
|
+
}
|
|
57
|
+
sendSMSCode() {
|
|
58
|
+
const phoneControl = this.codeForm.get('phone');
|
|
59
|
+
if (!phoneControl?.valid) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const phone = phoneControl.value;
|
|
63
|
+
this.countDown = true;
|
|
64
|
+
const start = setInterval(() => {
|
|
65
|
+
if (this.countDownTime >= 0) {
|
|
66
|
+
this.showButtonText = `${this.countDownTime--}秒重发`;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
clearInterval(start);
|
|
70
|
+
this.showButtonText = '重新发送';
|
|
71
|
+
this.countDown = false;
|
|
72
|
+
this.countDownTime = 60;
|
|
73
|
+
}
|
|
74
|
+
}, 1000);
|
|
75
|
+
this.authUserService.sendSMSCode('+86', phone).subscribe({
|
|
76
|
+
next: (res) => {
|
|
77
|
+
this.snackBarService.open('发送成功');
|
|
78
|
+
},
|
|
79
|
+
error: (error) => {
|
|
80
|
+
this.snackBarService.open(error.message);
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
login() {
|
|
85
|
+
let data = {};
|
|
86
|
+
if (this.tabIndex === 0) {
|
|
87
|
+
if (!this.passrodForm.valid) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
data = {
|
|
91
|
+
account: this.form['account'].value,
|
|
92
|
+
password: this.form['password'].value,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (this.tabIndex === 1) {
|
|
96
|
+
if (!this.codeForm.valid) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
data = {
|
|
100
|
+
phone: this.form['phone'].value,
|
|
101
|
+
code: this.form['code'].value,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
this.authService.login(data).subscribe({
|
|
105
|
+
next: () => {
|
|
106
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
107
|
+
window.location.href = this.continue === this.environment.accountsUrl ? this.environment.myaccountUrl : this.continue;
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
error: (error) => {
|
|
111
|
+
this.snackBarService.open(error.message);
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
onSelectedTabChange(e) {
|
|
116
|
+
const { index } = e;
|
|
117
|
+
this.tabIndex = index;
|
|
118
|
+
if (index === 0) {
|
|
119
|
+
this.codeForm.reset();
|
|
120
|
+
}
|
|
121
|
+
if (index === 1) {
|
|
122
|
+
this.passrodForm.reset();
|
|
123
|
+
}
|
|
124
|
+
if (index === 2) {
|
|
125
|
+
this.codeForm.reset();
|
|
126
|
+
this.passrodForm.reset();
|
|
127
|
+
this.wechat();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
wechat() {
|
|
131
|
+
const redirectUri = 'https://accounts.pinxiaoke.cn/login?continue';
|
|
132
|
+
// const redirectUri = `${window.location.origin}/login?continue`;
|
|
133
|
+
const href = 'https://cloudcache.tencent-cloud.com/open_proj/proj_qcloud_v2/gateway/login-regist/css/link-wx-login.css';
|
|
134
|
+
const encodedURI = encodeURI(redirectUri);
|
|
135
|
+
const src = `${this.baseUrl}?appid=${this.appid}&response_type=code&self_redirect=true&scope=snsapi_login&href=${href}&redirect_uri=${encodedURI}&state=${this.state}#wechat_redirect`;
|
|
136
|
+
this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(src);
|
|
137
|
+
}
|
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SigninComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: SigninComponent, isStandalone: true, selector: "rolatech-account-auth-signin", host: { listeners: { "window:message": "onLogin($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-xl sm:w-[450px]\">\n <!-- header -->\n <div class=\"flex sm:justify-center justify-start items-center mb-6\">\n <div class=\"text-2xl font-medium px-3\">\u767B\u5F55</div>\n </div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: AngularCommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: AngularComponentsModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }] }); }
|
|
140
|
+
}
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: SigninComponent, decorators: [{
|
|
142
|
+
type: Component,
|
|
143
|
+
args: [{ standalone: true, imports: [AngularCommonModule, AngularComponentsModule], selector: 'rolatech-account-auth-signin', template: "<div class=\"h-full flex flex-col md:justify-center items-center\">\n <div class=\"md:shadow-md p-8 rounded-xl sm:w-[450px]\">\n <!-- header -->\n <div class=\"flex sm:justify-center justify-start items-center mb-6\">\n <div class=\"text-2xl font-medium px-3\">\u767B\u5F55</div>\n </div>\n <!-- content -->\n <mat-tab-group mat-stretch-tabs=\"false\" mat-align-tabs=\"start\" (selectedTabChange)=\"onSelectedTabChange($event)\">\n <mat-tab label=\"\u8D26\u53F7\u5BC6\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"passrodForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u7528\u6237\u540D/\u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"account\" required />\n @if (passrodForm.controls['account'].touched && passrodForm.controls['account'].invalid) {\n <mat-error>\n @if (passrodForm.controls['account'].errors?.['required']) {\n <span>\u7528\u6237\u540D\u5FC5\u586B</span>\n }\n </mat-error>\n }\n </mat-form-field>\n <mat-form-field appearance=\"fill\">\n <mat-label> \u5BC6\u7801 </mat-label>\n <input autocomplete matInput formControlName=\"password\" type=\"password\" />\n @if (passrodForm.controls['password'].touched && passrodForm.controls['password'].invalid) {\n <mat-error>\n @if (passrodForm.controls['password'].errors?.['required']) {\n <span>\u8BF7\u8F93\u5165\u5BC6\u7801</span>\n }\n </mat-error>\n }\n </mat-form-field>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u77ED\u4FE1\u9A8C\u8BC1\u7801\">\n <div class=\"pt-6\">\n <form [formGroup]=\"codeForm\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u624B\u673A\u53F7 </mat-label>\n <input autocomplete matInput formControlName=\"phone\" required />\n @if (codeForm.controls['phone'].touched && codeForm.controls['phone'].invalid) {\n <mat-error>\n @if (codeForm.controls['phone'].errors?.['required']) {\n <span> \u624B\u673A\u53F7\u5FC5\u586B</span>\n }\n @if (codeForm.controls['phone'].errors?.['pattern']) {\n <span> \u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <div class=\"flex justify-between items-start gap-3\">\n <mat-form-field appearance=\"fill\">\n <mat-label> \u9A8C\u8BC1\u7801 </mat-label>\n <input matInput formControlName=\"code\" type=\"text\" required />\n @if (codeForm.controls['code'].touched && codeForm.controls['code'].invalid) {\n <mat-error>\n @if (codeForm.controls['code'].errors?.['required']) {\n <span> \u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801 </span>\n }\n </mat-error>\n }\n </mat-form-field>\n <button\n (click)=\"sendSMSCode()\"\n [disabled]=\"countDown\"\n [ngClass]=\"countDown ? 'bg-orange-300' : 'bg-orange-600 shadow shadow-gray-300 cursor-pointer'\"\n class=\"w-[128px] p-3 mt-2 text-white rounded text-center\"\n >\n <span>{{ showButtonText }}</span>\n </button>\n </div>\n </form>\n </div>\n </mat-tab>\n <mat-tab label=\"\u5FAE\u4FE1\u626B\u7801\">\n <div class=\"py-6\">\n <div class=\"w-[190px] h-[190px] mx-auto\">\n @if (tabIndex === 2) {\n <iframe [src]=\"urlSafe\" class=\"w-full h-full inline\" scrolling=\"no\" frameBorder=\"no\" #iframe></iframe>\n <!-- <img [src]=\"urlSafe\" class=\"w-full h-full inline\" /> -->\n <div></div>\n }\n </div>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <!-- actions -->\n <div class=\"flex justify-between items-center py-2 pl-2\">\n <a class=\"underline underline-offset-4\" href=\"signup\">\u521B\u5EFA\u8D26\u53F7</a>\n <div\n (click)=\"login()\"\n class=\"cursor-pointer bg-orange-600 hover:bg-orange-700 w-[128px] p-3 shadow-gray-300 shadow hover:shadow-lg text-white rounded text-center\"\n >\n <span>\u767B\u5F55</span>\n </div>\n </div>\n\n <!-- 3-part -->\n <!-- <div class=\"flex flex-col justify-center items-center mt-6\">\n <div class=\"flex items-center\">\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n <span class=\"px-3\">\u7B2C\u4E09\u65B9\u767B\u5F55</span>\n <span class=\"w-16 h-[1px] bg-gray-300\"></span>\n </div>\n <div class=\"mt-3 flex items-center hover:shadow hover:shadow-gray-400 cursor-pointer p-3\">\n <img class=\"w-4 h-4\" src=\"assets/images/icon64_appwx_logo.png\" />\n <span class=\"ml-1\">\u5FAE\u4FE1</span>\n </div>\n </div> -->\n </div>\n</div>\n", styles: ["mat-form-field{width:100%}\n"] }]
|
|
144
|
+
}], propDecorators: { onLogin: [{
|
|
145
|
+
type: HostListener,
|
|
146
|
+
args: ['window:message', ['$event']]
|
|
147
|
+
}] } });
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmluLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWduaW4vc2lnbmluLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NvdW50L3NyYy9saWIvY29tcG9uZW50cy9zaWduaW4vc2lnbmluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRSxPQUFPLEVBQW1CLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7OztBQVN6RSxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxhQUFhO0lBUGxEOztRQVVFLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pDLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLGdCQUFX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QUFDLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTTtRQUNKLE1BQU0sV0FBVyxHQUFHLDhDQUE4QyxDQUFDO1FBQ25FLGtFQUFrRTtRQUNsRSxNQUFNLElBQUksR0FBRywwR0FBMEcsQ0FBQztRQUN4SCxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxVQUFVLElBQUksQ0FBQyxLQUFLLGtFQUFrRSxJQUFJLGlCQUFpQixVQUFVLFVBQVUsSUFBSSxDQUFDLEtBQUssa0JBQWtCLENBQUM7UUFDdkwsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7OEdBL0hVLGVBQWU7a0dBQWYsZUFBZSw2S0NqQjVCLG9zS0FtSEEscUZEdkdZLG1CQUFtQix1d0NBQUUsdUJBQXVCOzsyRkFLM0MsZUFBZTtrQkFQM0IsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSx1QkFBdUIsQ0FBQyxZQUM3Qyw4QkFBOEI7OEJBMEJ4QyxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgaW5qZWN0LCBPbkluaXQsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0VGFiQ2hhbmdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBbmd1bGFyQ29tbW9uTW9kdWxlLCBBUFBfQ09ORklHIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tbW9uJztcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSwgQXV0aFVzZXJTZXJ2aWNlIH0gZnJvbSAnQHJvbGF0ZWNoL2FuZ3VsYXItYXV0aCc7XG5pbXBvcnQgeyBXZUNoYXRMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93ZWNoYXQtbG9naW4uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQW5ndWxhckNvbW1vbk1vZHVsZSwgQW5ndWxhckNvbXBvbmVudHNNb2R1bGVdLFxuICBzZWxlY3RvcjogJ3JvbGF0ZWNoLWFjY291bnQtYXV0aC1zaWduaW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbmluLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2lnbmluLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNpZ25pbkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwYXNzcm9kRm9ybSE6IEZvcm1Hcm91cDtcbiAgY29kZUZvcm0hOiBGb3JtR3JvdXA7XG4gIGNvbnRpbnVlID0gJyc7XG4gIGVudmlyb25tZW50ID0gaW5qZWN0KEFQUF9DT05GSUcpO1xuICBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcbiAgZm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuICBhdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIGF1dGhVc2VyU2VydmljZSA9IGluamVjdChBdXRoVXNlclNlcnZpY2UpO1xuICB3ZWNodExvZ2luU2VydmljZSA9IGluamVjdChXZUNoYXRMb2dpblNlcnZpY2UpO1xuXG4gIHRhYkluZGV4ID0gMDtcbiAgY291bnREb3duID0gZmFsc2U7XG4gIGNvdW50RG93blRpbWUgPSA2MDtcbiAgc2hvd0J1dHRvblRleHQgPSAn5Y+R6YCB6aqM6K+B56CBJztcbiAgYXBwaWQgPSAnd3g1NjdhY2JlYTczNDM5ODI4JztcbiAgc3RhdGUgPSAnYWRkJztcbiAgdXJsU2FmZSE6IFNhZmVSZXNvdXJjZVVybDtcbiAgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gIGJhc2VVcmwgPSAnaHR0cHM6Ly9vcGVuLndlaXhpbi5xcS5jb20vY29ubmVjdC9xcmNvbm5lY3QnO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcbiAgb25Mb2dpbihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiB8fCAvcmVhY3QtZGV2dG9vbHMvZ2kudGVzdChldmVudC5kYXRhLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCAmJiBldmVudC5kYXRhLmNvZGUgPT09IDIwMCkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLmNvbnRpbnVlID09PSB0aGlzLmVudmlyb25tZW50LmFjY291bnRzVXJsID8gdGhpcy5lbnZpcm9ubWVudC5teWFjY291bnRVcmwgOiB0aGlzLmNvbnRpbnVlO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKCfotKblj7fnmbvlvZUgLSDmi7zlsI/or74nKTtcbiAgICB0aGlzLnBhc3Nyb2RGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBhY2NvdW50OiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBwYXNzd29yZDogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuICAgIHRoaXMuY29kZUZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHBob25lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMucGF0dGVybignMSgzfDR8NXw2fDd8OHw5KVxcXFxkezl9JyldXSxcbiAgICAgIGNvZGU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRpbnVlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1snY29udGludWUnXSB8fCAnLyc7XG4gIH1cbiAgZ2V0IGZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXggPT09IDAgPyB0aGlzLnBhc3Nyb2RGb3JtLmNvbnRyb2xzIDogdGhpcy5jb2RlRm9ybS5jb250cm9scztcbiAgfVxuICBzZW5kU01TQ29kZSgpIHtcbiAgICBjb25zdCBwaG9uZUNvbnRyb2wgPSB0aGlzLmNvZGVGb3JtLmdldCgncGhvbmUnKTtcbiAgICBpZiAoIXBob25lQ29udHJvbD8udmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcGhvbmUgPSBwaG9uZUNvbnRyb2wudmFsdWU7XG4gICAgdGhpcy5jb3VudERvd24gPSB0cnVlO1xuICAgIGNvbnN0IHN0YXJ0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY291bnREb3duVGltZSA+PSAwKSB7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSBgJHt0aGlzLmNvdW50RG93blRpbWUtLX3np5Lph43lj5FgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbChzdGFydCk7XG4gICAgICAgIHRoaXMuc2hvd0J1dHRvblRleHQgPSAn6YeN5paw5Y+R6YCBJztcbiAgICAgICAgdGhpcy5jb3VudERvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb3VudERvd25UaW1lID0gNjA7XG4gICAgICB9XG4gICAgfSwgMTAwMCk7XG5cbiAgICB0aGlzLmF1dGhVc2VyU2VydmljZS5zZW5kU01TQ29kZSgnKzg2JywgcGhvbmUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ+WPkemAgeaIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgbG9naW4oKSB7XG4gICAgbGV0IGRhdGEgPSB7fTtcbiAgICBpZiAodGhpcy50YWJJbmRleCA9PT0gMCkge1xuICAgICAgaWYgKCF0aGlzLnBhc3Nyb2RGb3JtLnZhbGlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIGFjY291bnQ6IHRoaXMuZm9ybVsnYWNjb3VudCddLnZhbHVlLFxuICAgICAgICBwYXNzd29yZDogdGhpcy5mb3JtWydwYXNzd29yZCddLnZhbHVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGFiSW5kZXggPT09IDEpIHtcbiAgICAgIGlmICghdGhpcy5jb2RlRm9ybS52YWxpZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkYXRhID0ge1xuICAgICAgICBwaG9uZTogdGhpcy5mb3JtWydwaG9uZSddLnZhbHVlLFxuICAgICAgICBjb2RlOiB0aGlzLmZvcm1bJ2NvZGUnXS52YWx1ZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5hdXRoU2VydmljZS5sb2dpbihkYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdGhpcy5jb250aW51ZSA9PT0gdGhpcy5lbnZpcm9ubWVudC5hY2NvdW50c1VybCA/IHRoaXMuZW52aXJvbm1lbnQubXlhY2NvdW50VXJsIDogdGhpcy5jb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgb25TZWxlY3RlZFRhYkNoYW5nZShlOiBNYXRUYWJDaGFuZ2VFdmVudCkge1xuICAgIGNvbnN0IHsgaW5kZXggfSA9IGU7XG4gICAgdGhpcy50YWJJbmRleCA9IGluZGV4O1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5jb2RlRm9ybS5yZXNldCgpO1xuICAgIH1cbiAgICBpZiAoaW5kZXggPT09IDEpIHtcbiAgICAgIHRoaXMucGFzc3JvZEZvcm0ucmVzZXQoKTtcbiAgICB9XG4gICAgaWYgKGluZGV4ID09PSAyKSB7XG4gICAgICB0aGlzLmNvZGVGb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLnBhc3Nyb2RGb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLndlY2hhdCgpO1xuICAgIH1cbiAgfVxuICB3ZWNoYXQoKSB7XG4gICAgY29uc3QgcmVkaXJlY3RVcmkgPSAnaHR0cHM6Ly9hY2NvdW50cy5waW54aWFva2UuY24vbG9naW4/Y29udGludWUnO1xuICAgIC8vIGNvbnN0IHJlZGlyZWN0VXJpID0gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vbG9naW4/Y29udGludWVgO1xuICAgIGNvbnN0IGhyZWYgPSAnaHR0cHM6Ly9jbG91ZGNhY2hlLnRlbmNlbnQtY2xvdWQuY29tL29wZW5fcHJvai9wcm9qX3FjbG91ZF92Mi9nYXRld2F5L2xvZ2luLXJlZ2lzdC9jc3MvbGluay13eC1sb2dpbi5jc3MnO1xuICAgIGNvbnN0IGVuY29kZWRVUkkgPSBlbmNvZGVVUkkocmVkaXJlY3RVcmkpO1xuICAgIGNvbnN0IHNyYyA9IGAke3RoaXMuYmFzZVVybH0/YXBwaWQ9JHt0aGlzLmFwcGlkfSZyZXNwb25zZV90eXBlPWNvZGUmc2VsZl9yZWRpcmVjdD10cnVlJnNjb3BlPXNuc2FwaV9sb2dpbiZocmVmPSR7aHJlZn0mcmVkaXJlY3RfdXJpPSR7ZW5jb2RlZFVSSX0mc3RhdGU9JHt0aGlzLnN0YXRlfSN3ZWNoYXRfcmVkaXJlY3RgO1xuICAgIHRoaXMudXJsU2FmZSA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChzcmMpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1jb2wgbWQ6anVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJtZDpzaGFkb3ctbWQgcC04IHJvdW5kZWQteGwgc206dy1bNDUwcHhdXCI+XG4gICAgPCEtLSBoZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggc206anVzdGlmeS1jZW50ZXIganVzdGlmeS1zdGFydCBpdGVtcy1jZW50ZXIgbWItNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtMnhsIGZvbnQtbWVkaXVtIHB4LTNcIj7nmbvlvZU8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGNvbnRlbnQgLS0+XG4gICAgPG1hdC10YWItZ3JvdXAgbWF0LXN0cmV0Y2gtdGFicz1cImZhbHNlXCIgbWF0LWFsaWduLXRhYnM9XCJzdGFydFwiIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwi6LSm5Y+35a+G56CBXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdC02XCI+XG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJwYXNzcm9kRm9ybVwiPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOeUqOaIt+WQjS/miYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYWNjb3VudFwiIHJlcXVpcmVkIC8+XG4gICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ2FjY291bnQnXS50b3VjaGVkICYmIHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKHBhc3Nyb2RGb3JtLmNvbnRyb2xzWydhY2NvdW50J10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+55So5oi35ZCN5b+F5aGrPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+IOWvhueggSA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0IGF1dG9jb21wbGV0ZSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIC8+XG4gICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10udG91Y2hlZCAmJiBwYXNzcm9kRm9ybS5jb250cm9sc1sncGFzc3dvcmQnXS5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgIEBpZiAocGFzc3JvZEZvcm0uY29udHJvbHNbJ3Bhc3N3b3JkJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+6K+36L6T5YWl5a+G56CBPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIuefreS/oemqjOivgeeggVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHQtNlwiPlxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiY29kZUZvcm1cIj5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPiDmiYvmnLrlj7cgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxpbnB1dCBhdXRvY29tcGxldGUgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLnRvdWNoZWQgJiYgY29kZUZvcm0uY29udHJvbHNbJ3Bob25lJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPiDmiYvmnLrlj7flv4Xloas8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBAaWYgKGNvZGVGb3JtLmNvbnRyb2xzWydwaG9uZSddLmVycm9ycz8uWydwYXR0ZXJuJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOaJi+acuuWPt+agvOW8j+mUmeivryA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD4g6aqM6K+B56CBIDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb2RlXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCAvPlxuICAgICAgICAgICAgICAgIEBpZiAoY29kZUZvcm0uY29udHJvbHNbJ2NvZGUnXS50b3VjaGVkICYmIGNvZGVGb3JtLmNvbnRyb2xzWydjb2RlJ10uaW52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChjb2RlRm9ybS5jb250cm9sc1snY29kZSddLmVycm9ycz8uWydyZXF1aXJlZCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IOivt+i+k+WFpemqjOivgeeggSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZW5kU01TQ29kZSgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY291bnREb3duXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb3VudERvd24gPyAnYmctb3JhbmdlLTMwMCcgOiAnYmctb3JhbmdlLTYwMCBzaGFkb3cgc2hhZG93LWdyYXktMzAwIGN1cnNvci1wb2ludGVyJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LVsxMjhweF0gcC0zIG10LTIgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNob3dCdXR0b25UZXh0IH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIuW+ruS/oeaJq+eggVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktNlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LVsxOTBweF0gaC1bMTkwcHhdIG14LWF1dG9cIj5cbiAgICAgICAgICAgIEBpZiAodGFiSW5kZXggPT09IDIpIHtcbiAgICAgICAgICAgICAgPGlmcmFtZSBbc3JjXT1cInVybFNhZmVcIiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgaW5saW5lXCIgc2Nyb2xsaW5nPVwibm9cIiBmcmFtZUJvcmRlcj1cIm5vXCIgI2lmcmFtZT48L2lmcmFtZT5cbiAgICAgICAgICAgICAgPCEtLSA8aW1nIFtzcmNdPVwidXJsU2FmZVwiIGNsYXNzPVwidy1mdWxsIGgtZnVsbCBpbmxpbmVcIiAvPiAtLT5cbiAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgPCEtLSBhY3Rpb25zIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgcHktMiBwbC0yXCI+XG4gICAgICA8YSBjbGFzcz1cInVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTRcIiBocmVmPVwic2lnbnVwXCI+5Yib5bu66LSm5Y+3PC9hPlxuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwibG9naW4oKVwiXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYmctb3JhbmdlLTYwMCBob3ZlcjpiZy1vcmFuZ2UtNzAwIHctWzEyOHB4XSBwLTMgc2hhZG93LWdyYXktMzAwIHNoYWRvdyBob3ZlcjpzaGFkb3ctbGcgdGV4dC13aGl0ZSByb3VuZGVkIHRleHQtY2VudGVyXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+55m75b2VPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIDMtcGFydCAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBtdC02XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInctMTYgaC1bMXB4XSBiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicHgtM1wiPuesrOS4ieaWueeZu+W9lTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidy0xNiBoLVsxcHhdIGJnLWdyYXktMzAwXCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGhvdmVyOnNoYWRvdyBob3ZlcjpzaGFkb3ctZ3JheS00MDAgY3Vyc29yLXBvaW50ZXIgcC0zXCI+XG4gICAgICA8aW1nIGNsYXNzPVwidy00IGgtNFwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaWNvbjY0X2FwcHd4X2xvZ28ucG5nXCIgLz5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWwtMVwiPuW+ruS/oTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+IC0tPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|