@things-factory/auth-base 7.0.0-alpha.8 → 7.0.0
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/client/actions/auth.ts +3 -3
- package/dist-client/actions/auth.d.ts +3 -3
- package/dist-client/actions/auth.js.map +1 -1
- package/dist-client/auth.js.map +1 -1
- package/dist-client/directive/privileged.d.ts +4 -4
- package/dist-client/directive/privileged.js.map +1 -1
- package/dist-client/profiled.js.map +1 -1
- package/dist-client/reducers/auth.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/constants/error-code.d.ts +3 -0
- package/dist-server/constants/error-code.js +4 -1
- package/dist-server/constants/error-code.js.map +1 -1
- package/dist-server/controllers/change-pwd.js +1 -2
- package/dist-server/controllers/change-pwd.js.map +1 -1
- package/dist-server/controllers/checkin.js +1 -2
- package/dist-server/controllers/checkin.js.map +1 -1
- package/dist-server/controllers/delete-user.js +2 -3
- package/dist-server/controllers/delete-user.js.map +1 -1
- package/dist-server/controllers/invitation.js +4 -5
- package/dist-server/controllers/invitation.js.map +1 -1
- package/dist-server/controllers/profile.d.ts +1 -0
- package/dist-server/controllers/profile.js +1 -2
- package/dist-server/controllers/profile.js.map +1 -1
- package/dist-server/controllers/reset-password.js +2 -3
- package/dist-server/controllers/reset-password.js.map +1 -1
- package/dist-server/controllers/signin.js +1 -2
- package/dist-server/controllers/signin.js.map +1 -1
- package/dist-server/controllers/signup.js +1 -2
- package/dist-server/controllers/signup.js.map +1 -1
- package/dist-server/controllers/unlock-user.js +2 -3
- package/dist-server/controllers/unlock-user.js.map +1 -1
- package/dist-server/controllers/utils/make-invitation-token.js +1 -2
- package/dist-server/controllers/utils/make-invitation-token.js.map +1 -1
- package/dist-server/controllers/utils/make-verification-token.js +1 -2
- package/dist-server/controllers/utils/make-verification-token.js.map +1 -1
- package/dist-server/controllers/utils/password-rule.js +10 -10
- package/dist-server/controllers/utils/password-rule.js.map +1 -1
- package/dist-server/controllers/utils/save-invitation-token.js +1 -2
- package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
- package/dist-server/controllers/utils/save-verification-token.js +1 -2
- package/dist-server/controllers/utils/save-verification-token.js.map +1 -1
- package/dist-server/controllers/verification.js +3 -4
- package/dist-server/controllers/verification.js.map +1 -1
- package/dist-server/index.js.map +1 -1
- package/dist-server/middlewares/authenticate-401-middleware.js +2 -3
- package/dist-server/middlewares/authenticate-401-middleware.js.map +1 -1
- package/dist-server/middlewares/domain-authenticate-middleware.js +5 -3
- package/dist-server/middlewares/domain-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/graphql-authenticate-middleware.js +1 -2
- package/dist-server/middlewares/graphql-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +1 -0
- package/dist-server/middlewares/index.js +3 -3
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/middlewares/jwt-authenticate-middleware.js +1 -2
- package/dist-server/middlewares/jwt-authenticate-middleware.js.map +1 -1
- package/dist-server/middlewares/signin-middleware.js +1 -2
- package/dist-server/middlewares/signin-middleware.js.map +1 -1
- package/dist-server/middlewares/webauthn-middleware.d.ts +1 -0
- package/dist-server/middlewares/webauthn-middleware.js +100 -0
- package/dist-server/middlewares/webauthn-middleware.js.map +1 -0
- package/dist-server/migrations/1548206416130-SeedUser.js.map +1 -1
- package/dist-server/migrations/1566805283882-SeedPrivilege.js.map +1 -1
- package/dist-server/router/auth-checkin-router.js.map +1 -1
- package/dist-server/router/auth-private-process-router.js +7 -1
- package/dist-server/router/auth-private-process-router.js.map +1 -1
- package/dist-server/router/auth-public-process-router.js.map +1 -1
- package/dist-server/router/auth-signin-router.js.map +1 -1
- package/dist-server/router/auth-signup-router.js.map +1 -1
- package/dist-server/router/index.d.ts +1 -0
- package/dist-server/router/index.js +1 -0
- package/dist-server/router/index.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-authorize-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-router.js.map +1 -1
- package/dist-server/router/oauth2/oauth2-server.js.map +1 -1
- package/dist-server/router/oauth2/passport-oauth2-client-password.js +1 -2
- package/dist-server/router/oauth2/passport-oauth2-client-password.js.map +1 -1
- package/dist-server/router/oauth2/passport-refresh-token.js +1 -2
- package/dist-server/router/oauth2/passport-refresh-token.js.map +1 -1
- package/dist-server/router/site-root-router.js.map +1 -1
- package/dist-server/router/webauthn-router.d.ts +2 -0
- package/dist-server/router/webauthn-router.js +69 -0
- package/dist-server/router/webauthn-router.js.map +1 -0
- package/dist-server/routes.js +3 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-mutation.js +2 -2
- package/dist-server/service/app-binding/app-binding-mutation.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-query.js +3 -3
- package/dist-server/service/app-binding/app-binding-query.js.map +1 -1
- package/dist-server/service/app-binding/app-binding-types.js +2 -2
- package/dist-server/service/app-binding/app-binding-types.js.map +1 -1
- package/dist-server/service/app-binding/app-binding.js +2 -2
- package/dist-server/service/app-binding/app-binding.js.map +1 -1
- package/dist-server/service/appliance/appliance-mutation.js +2 -2
- package/dist-server/service/appliance/appliance-mutation.js.map +1 -1
- package/dist-server/service/appliance/appliance-query.d.ts +1 -0
- package/dist-server/service/appliance/appliance-query.js +24 -3
- package/dist-server/service/appliance/appliance-query.js.map +1 -1
- package/dist-server/service/appliance/appliance-types.js +6 -6
- package/dist-server/service/appliance/appliance-types.js.map +1 -1
- package/dist-server/service/appliance/appliance.d.ts +1 -1
- package/dist-server/service/appliance/appliance.js +3 -2
- package/dist-server/service/appliance/appliance.js.map +1 -1
- package/dist-server/service/application/application-mutation.js +2 -2
- package/dist-server/service/application/application-mutation.js.map +1 -1
- package/dist-server/service/application/application-query.js +3 -3
- package/dist-server/service/application/application-query.js.map +1 -1
- package/dist-server/service/application/application-types.js +8 -8
- package/dist-server/service/application/application-types.js.map +1 -1
- package/dist-server/service/application/application.js +7 -6
- package/dist-server/service/application/application.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-mutation.js +2 -2
- package/dist-server/service/auth-provider/auth-provider-mutation.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-parameter-spec.d.ts +3 -0
- package/dist-server/service/auth-provider/auth-provider-parameter-spec.js +6 -2
- package/dist-server/service/auth-provider/auth-provider-parameter-spec.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-query.js +3 -3
- package/dist-server/service/auth-provider/auth-provider-query.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider-type.js +6 -6
- package/dist-server/service/auth-provider/auth-provider-type.js.map +1 -1
- package/dist-server/service/auth-provider/auth-provider.d.ts +0 -5
- package/dist-server/service/auth-provider/auth-provider.js +8 -22
- package/dist-server/service/auth-provider/auth-provider.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-mutation.js +2 -2
- package/dist-server/service/domain-generator/domain-generator-mutation.js.map +1 -1
- package/dist-server/service/domain-generator/domain-generator-types.js +6 -6
- package/dist-server/service/domain-generator/domain-generator-types.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-mutation.js +6 -6
- package/dist-server/service/granted-role/granted-role-mutation.js.map +1 -1
- package/dist-server/service/granted-role/granted-role-query.js +2 -2
- package/dist-server/service/granted-role/granted-role-query.js.map +1 -1
- package/dist-server/service/granted-role/granted-role.d.ts +1 -1
- package/dist-server/service/granted-role/granted-role.js +3 -3
- package/dist-server/service/granted-role/granted-role.js.map +1 -1
- package/dist-server/service/index.d.ts +2 -1
- package/dist-server/service/index.js +4 -1
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/invitation/invitation-mutation.js +2 -2
- package/dist-server/service/invitation/invitation-mutation.js.map +1 -1
- package/dist-server/service/invitation/invitation-query.js +2 -2
- package/dist-server/service/invitation/invitation-query.js.map +1 -1
- package/dist-server/service/invitation/invitation-types.js +2 -2
- package/dist-server/service/invitation/invitation-types.js.map +1 -1
- package/dist-server/service/invitation/invitation.js +2 -2
- package/dist-server/service/invitation/invitation.js.map +1 -1
- package/dist-server/service/login-history/login-history-query.js +3 -3
- package/dist-server/service/login-history/login-history-query.js.map +1 -1
- package/dist-server/service/login-history/login-history-type.js +2 -2
- package/dist-server/service/login-history/login-history-type.js.map +1 -1
- package/dist-server/service/login-history/login-history.d.ts +1 -1
- package/dist-server/service/login-history/login-history.js +4 -4
- package/dist-server/service/login-history/login-history.js.map +1 -1
- package/dist-server/service/partner/partner-mutation.js +2 -2
- package/dist-server/service/partner/partner-mutation.js.map +1 -1
- package/dist-server/service/partner/partner-query.js +4 -4
- package/dist-server/service/partner/partner-query.js.map +1 -1
- package/dist-server/service/partner/partner-types.js +2 -2
- package/dist-server/service/partner/partner-types.js.map +1 -1
- package/dist-server/service/partner/partner.d.ts +2 -2
- package/dist-server/service/partner/partner.js +6 -6
- package/dist-server/service/partner/partner.js.map +1 -1
- package/dist-server/service/password-history/password-history.js +2 -2
- package/dist-server/service/password-history/password-history.js.map +1 -1
- package/dist-server/service/privilege/privilege-directive.js.map +1 -1
- package/dist-server/service/privilege/privilege-mutation.js +2 -2
- package/dist-server/service/privilege/privilege-mutation.js.map +1 -1
- package/dist-server/service/privilege/privilege-query.js +3 -3
- package/dist-server/service/privilege/privilege-query.js.map +1 -1
- package/dist-server/service/privilege/privilege-types.js +8 -8
- package/dist-server/service/privilege/privilege-types.js.map +1 -1
- package/dist-server/service/privilege/privilege.js +6 -6
- package/dist-server/service/privilege/privilege.js.map +1 -1
- package/dist-server/service/role/role-mutation.js +2 -2
- package/dist-server/service/role/role-mutation.js.map +1 -1
- package/dist-server/service/role/role-query.js +3 -3
- package/dist-server/service/role/role-query.js.map +1 -1
- package/dist-server/service/role/role-types.js +10 -10
- package/dist-server/service/role/role-types.js.map +1 -1
- package/dist-server/service/role/role.d.ts +1 -1
- package/dist-server/service/role/role.js +4 -3
- package/dist-server/service/role/role.js.map +1 -1
- package/dist-server/service/user/domain-query.js +2 -2
- package/dist-server/service/user/domain-query.js.map +1 -1
- package/dist-server/service/user/user-mutation.js +2 -2
- package/dist-server/service/user/user-mutation.js.map +1 -1
- package/dist-server/service/user/user-query.js +3 -32
- package/dist-server/service/user/user-query.js.map +1 -1
- package/dist-server/service/user/user-types.js +6 -6
- package/dist-server/service/user/user-types.js.map +1 -1
- package/dist-server/service/user/user.d.ts +2 -0
- package/dist-server/service/user/user.js +19 -29
- package/dist-server/service/user/user.js.map +1 -1
- package/dist-server/service/users-auth-providers/users-auth-providers.js +3 -3
- package/dist-server/service/users-auth-providers/users-auth-providers.js.map +1 -1
- package/dist-server/service/verification-token/verification-token.js +3 -3
- package/dist-server/service/verification-token/verification-token.js.map +1 -1
- package/dist-server/service/web-auth-credential/index.d.ts +2 -0
- package/dist-server/service/web-auth-credential/index.js +6 -0
- package/dist-server/service/web-auth-credential/index.js.map +1 -0
- package/dist-server/service/web-auth-credential/web-auth-credential.d.ts +15 -0
- package/dist-server/service/web-auth-credential/web-auth-credential.js +72 -0
- package/dist-server/service/web-auth-credential/web-auth-credential.js.map +1 -0
- package/dist-server/templates/account-unlock-email.js +1 -2
- package/dist-server/templates/account-unlock-email.js.map +1 -1
- package/dist-server/templates/invitation-email.js +1 -2
- package/dist-server/templates/invitation-email.js.map +1 -1
- package/dist-server/templates/reset-password-email.js +1 -2
- package/dist-server/templates/reset-password-email.js.map +1 -1
- package/dist-server/templates/verification-email.js +1 -2
- package/dist-server/templates/verification-email.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/types.d.ts +2 -2
- package/dist-server/types.js.map +1 -1
- package/dist-server/utils/accepts.js +1 -2
- package/dist-server/utils/accepts.js.map +1 -1
- package/dist-server/utils/access-token-cookie.d.ts +1 -0
- package/dist-server/utils/access-token-cookie.js +14 -4
- package/dist-server/utils/access-token-cookie.js.map +1 -1
- package/dist-server/utils/check-permission.js +1 -2
- package/dist-server/utils/check-permission.js.map +1 -1
- package/dist-server/utils/check-user-belongs-domain.js +1 -2
- package/dist-server/utils/check-user-belongs-domain.js.map +1 -1
- package/dist-server/utils/encrypt-state.js +2 -3
- package/dist-server/utils/encrypt-state.js.map +1 -1
- package/dist-server/utils/get-aes-256-key.js.map +1 -1
- package/dist-server/utils/get-domain-from-hostname.js +1 -2
- package/dist-server/utils/get-domain-from-hostname.js.map +1 -1
- package/dist-server/utils/get-domain-users.js +2 -3
- package/dist-server/utils/get-domain-users.js.map +1 -1
- package/dist-server/utils/get-secret.js.map +1 -1
- package/dist-server/utils/get-user-domains.js +4 -5
- package/dist-server/utils/get-user-domains.js.map +1 -1
- package/helps/config/SECRET.ja.md +13 -0
- package/helps/config/SECRET.ko.md +13 -0
- package/helps/config/SECRET.md +3 -3
- package/helps/config/SECRET.ms.md +13 -0
- package/helps/config/SECRET.zh.md +13 -0
- package/helps/config/accessTokenCookieKey.ja.md +11 -0
- package/helps/config/accessTokenCookieKey.ko.md +11 -0
- package/helps/config/accessTokenCookieKey.md +1 -1
- package/helps/config/accessTokenCookieKey.ms.md +11 -0
- package/helps/config/accessTokenCookieKey.zh.md +11 -0
- package/helps/config/applianceJwtExpiresIn.ja.md +26 -0
- package/helps/config/applianceJwtExpiresIn.ko.md +26 -0
- package/helps/config/applianceJwtExpiresIn.md +18 -15
- package/helps/config/applianceJwtExpiresIn.ms.md +30 -0
- package/helps/config/applianceJwtExpiresIn.zh.md +26 -0
- package/helps/config/disableUserSignupProcess.ja.md +22 -0
- package/helps/config/disableUserSignupProcess.ko.md +22 -0
- package/helps/config/disableUserSignupProcess.md +3 -3
- package/helps/config/disableUserSignupProcess.ms.md +22 -0
- package/helps/config/disableUserSignupProcess.zh.md +22 -0
- package/helps/config/i18n.ja.md +44 -0
- package/helps/config/i18n.ko.md +44 -0
- package/helps/config/i18n.md +6 -6
- package/helps/config/i18n.ms.md +44 -0
- package/helps/config/i18n.zh.md +44 -0
- package/helps/config/password.ja.md +53 -0
- package/helps/config/password.ko.md +65 -0
- package/helps/config/password.md +8 -36
- package/helps/config/password.ms.md +65 -0
- package/helps/config/password.zh.md +65 -0
- package/helps/config/publicHomeRoute.ja.md +14 -0
- package/helps/config/publicHomeRoute.ko.md +14 -0
- package/helps/config/publicHomeRoute.md +3 -3
- package/helps/config/publicHomeRoute.ms.md +14 -0
- package/helps/config/publicHomeRoute.zh.md +14 -0
- package/helps/config/session.ja.md +45 -0
- package/helps/config/session.ko.md +49 -0
- package/helps/config/session.md +10 -10
- package/helps/config/session.ms.md +46 -0
- package/helps/config/session.zh.md +49 -0
- package/package.json +12 -9
- package/server/constants/error-code.ts +3 -0
- package/server/middlewares/authenticate-401-middleware.ts +1 -1
- package/server/middlewares/domain-authenticate-middleware.ts +5 -1
- package/server/middlewares/index.ts +2 -1
- package/server/middlewares/webauthn-middleware.ts +127 -0
- package/server/router/auth-private-process-router.ts +8 -1
- package/server/router/index.ts +1 -0
- package/server/router/webauthn-router.ts +87 -0
- package/server/routes.ts +7 -8
- package/server/service/app-binding/app-binding-query.ts +1 -1
- package/server/service/appliance/appliance-query.ts +22 -1
- package/server/service/appliance/appliance.ts +4 -3
- package/server/service/application/application-query.ts +1 -1
- package/server/service/application/application.ts +7 -6
- package/server/service/auth-provider/auth-provider-parameter-spec.ts +3 -0
- package/server/service/auth-provider/auth-provider-query.ts +4 -1
- package/server/service/auth-provider/auth-provider-type.ts +3 -7
- package/server/service/auth-provider/auth-provider.ts +3 -19
- package/server/service/granted-role/granted-role.ts +2 -2
- package/server/service/index.ts +5 -5
- package/server/service/login-history/login-history-query.ts +4 -1
- package/server/service/login-history/login-history.ts +3 -3
- package/server/service/partner/partner-query.ts +5 -2
- package/server/service/partner/partner.ts +6 -6
- package/server/service/privilege/privilege-query.ts +14 -3
- package/server/service/role/role-query.ts +1 -1
- package/server/service/role/role.ts +3 -2
- package/server/service/user/user-query.ts +1 -33
- package/server/service/user/user.ts +12 -22
- package/server/service/users-auth-providers/users-auth-providers.ts +1 -1
- package/server/service/web-auth-credential/index.ts +3 -0
- package/server/service/web-auth-credential/web-auth-credential.ts +67 -0
- package/server/types.ts +2 -2
- package/server/utils/access-token-cookie.ts +12 -0
- package/translations/en.json +33 -28
- package/translations/ja.json +34 -29
- package/translations/ko.json +35 -29
- package/translations/ms.json +5 -0
- package/translations/zh.json +6 -0
@@ -12,6 +12,7 @@ import { AuthError } from '../../errors/auth-error'
|
|
12
12
|
import { SECRET } from '../../utils/get-secret'
|
13
13
|
import { Role } from '../role/role'
|
14
14
|
import { Privilege } from '../privilege/privilege'
|
15
|
+
import { WebAuthCredential } from '../web-auth-credential/web-auth-credential'
|
15
16
|
import { UsersAuthProviders } from '../users-auth-providers/users-auth-providers'
|
16
17
|
import { getDomainsWithPrivilege } from '../../utils/get-user-domains'
|
17
18
|
|
@@ -31,7 +32,6 @@ export enum UserStatus {
|
|
31
32
|
|
32
33
|
@Entity()
|
33
34
|
@Index('ix_user_0', (user: User) => [user.email], { unique: true })
|
34
|
-
//@Index('ix_user_1', (user: User) => [user.id], { unique: true })
|
35
35
|
@ObjectType()
|
36
36
|
export class User {
|
37
37
|
@PrimaryGeneratedColumn('uuid')
|
@@ -39,12 +39,10 @@ export class User {
|
|
39
39
|
readonly id: string
|
40
40
|
|
41
41
|
@Column()
|
42
|
-
@Field()
|
42
|
+
@Field({ nullable: true })
|
43
43
|
name: string
|
44
44
|
|
45
|
-
@Column({
|
46
|
-
nullable: true
|
47
|
-
})
|
45
|
+
@Column({ nullable: true })
|
48
46
|
@Field({ nullable: true })
|
49
47
|
description: string
|
50
48
|
|
@@ -69,22 +67,16 @@ export class User {
|
|
69
67
|
@Field(type => [Role])
|
70
68
|
roles?: Role[]
|
71
69
|
|
72
|
-
@Column({
|
73
|
-
nullable: true
|
74
|
-
})
|
70
|
+
@Column({ nullable: true })
|
75
71
|
@Field({ nullable: true })
|
76
72
|
userType: string // default: 'user', enum: 'user', 'application', 'appliance'
|
77
73
|
|
78
|
-
@Column({
|
79
|
-
nullable: true
|
80
|
-
})
|
74
|
+
@Column({ nullable: true })
|
81
75
|
@Field({ nullable: true })
|
82
76
|
reference: string
|
83
77
|
|
84
78
|
@Directive('@privilege(category: "security", privilege: "query", domainOwnerGranted: true)')
|
85
|
-
@Column({
|
86
|
-
nullable: true
|
87
|
-
})
|
79
|
+
@Column({ nullable: true })
|
88
80
|
salt: string
|
89
81
|
|
90
82
|
@Column({ nullable: true })
|
@@ -104,20 +96,18 @@ export class User {
|
|
104
96
|
@Field(type => String)
|
105
97
|
status: UserStatus
|
106
98
|
|
107
|
-
@Column({
|
108
|
-
type: 'smallint',
|
109
|
-
default: 0
|
110
|
-
})
|
99
|
+
@Column({ type: 'smallint', default: 0 })
|
111
100
|
failCount: number
|
112
101
|
|
113
|
-
@Column({
|
114
|
-
nullable: true
|
115
|
-
})
|
102
|
+
@Column({ nullable: true })
|
116
103
|
passwordUpdatedAt: Date
|
117
104
|
|
118
105
|
@Field({ nullable: true })
|
119
106
|
owner: boolean /* should not be a column */
|
120
107
|
|
108
|
+
@OneToMany(() => WebAuthCredential, credential => credential.user)
|
109
|
+
credentials: WebAuthCredential[]
|
110
|
+
|
121
111
|
@OneToMany(() => UsersAuthProviders, usersAuthProviders => usersAuthProviders.user)
|
122
112
|
@Field(type => [UsersAuthProviders], { nullable: true })
|
123
113
|
usersAuthProviders: UsersAuthProviders[]
|
@@ -252,7 +242,7 @@ export class User {
|
|
252
242
|
const repository = getRepository(User)
|
253
243
|
var user = await repository.findOne({
|
254
244
|
where: { id: decoded.id },
|
255
|
-
relations: ['domains'],
|
245
|
+
relations: ['domains', 'credentials'],
|
256
246
|
cache: true
|
257
247
|
})
|
258
248
|
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import { Field, ID } from 'type-graphql'
|
2
|
+
import {
|
3
|
+
CreateDateColumn,
|
4
|
+
UpdateDateColumn,
|
5
|
+
Entity,
|
6
|
+
Index,
|
7
|
+
Column,
|
8
|
+
RelationId,
|
9
|
+
ManyToOne,
|
10
|
+
PrimaryGeneratedColumn
|
11
|
+
} from 'typeorm'
|
12
|
+
|
13
|
+
import { User } from '../user/user'
|
14
|
+
import { AuthenticatorTransportFuture } from '@simplewebauthn/server/script/deps'
|
15
|
+
|
16
|
+
@Entity()
|
17
|
+
@Index(
|
18
|
+
'ix_web_auth_credential_0',
|
19
|
+
(webAuthCredential: WebAuthCredential) => [webAuthCredential.user, webAuthCredential.credentialId],
|
20
|
+
{ unique: true }
|
21
|
+
)
|
22
|
+
export class WebAuthCredential {
|
23
|
+
@PrimaryGeneratedColumn('uuid')
|
24
|
+
@Field(type => ID)
|
25
|
+
readonly id: string
|
26
|
+
|
27
|
+
@ManyToOne(type => User, { nullable: true })
|
28
|
+
@Field(type => User, { nullable: true })
|
29
|
+
user?: User
|
30
|
+
|
31
|
+
@RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.user)
|
32
|
+
userId?: string
|
33
|
+
|
34
|
+
@Column()
|
35
|
+
@Field({ nullable: true })
|
36
|
+
credentialId: string
|
37
|
+
|
38
|
+
@Column()
|
39
|
+
@Field({ nullable: true })
|
40
|
+
publicKey: string
|
41
|
+
|
42
|
+
@Column()
|
43
|
+
@Field({ nullable: true })
|
44
|
+
counter: number
|
45
|
+
|
46
|
+
@CreateDateColumn()
|
47
|
+
@Field({ nullable: true })
|
48
|
+
createdAt?: Date
|
49
|
+
|
50
|
+
@UpdateDateColumn()
|
51
|
+
@Field({ nullable: true })
|
52
|
+
updatedAt?: Date
|
53
|
+
|
54
|
+
@ManyToOne(type => User, { nullable: true })
|
55
|
+
@Field(type => User, { nullable: true })
|
56
|
+
creator?: User
|
57
|
+
|
58
|
+
@RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.creator)
|
59
|
+
creatorId?: string
|
60
|
+
|
61
|
+
@ManyToOne(type => User, { nullable: true })
|
62
|
+
@Field(type => User, { nullable: true })
|
63
|
+
updater?: User
|
64
|
+
|
65
|
+
@RelationId((webAuthCredential: WebAuthCredential) => webAuthCredential.updater)
|
66
|
+
updaterId?: string
|
67
|
+
}
|
package/server/types.ts
CHANGED
@@ -8,14 +8,14 @@ import { User } from './service/user/user'
|
|
8
8
|
declare global {
|
9
9
|
export type ResolverContext = {
|
10
10
|
state: IContextState
|
11
|
-
t
|
11
|
+
t?: TFunction
|
12
12
|
[key: string]: any
|
13
13
|
}
|
14
14
|
|
15
15
|
interface IContextState {
|
16
16
|
domain: Domain
|
17
17
|
user: User
|
18
|
-
tx
|
18
|
+
tx?: EntityManager
|
19
19
|
[key: string]: any
|
20
20
|
}
|
21
21
|
}
|
@@ -25,6 +25,17 @@ export function setAccessTokenCookie(context, token) {
|
|
25
25
|
context.cookies.set(accessTokenCookieKey, token, cookie)
|
26
26
|
}
|
27
27
|
|
28
|
+
export function setSessionAccessToken(context) {
|
29
|
+
/* koa-session 을 사용하는 경우에는, cookie 직접 설정이 작동되지 않는다. 그런 경우에는 session에 설정해서 cookie를 변경한다. */
|
30
|
+
const { user } = context.state
|
31
|
+
|
32
|
+
context.session = {
|
33
|
+
id: user.id,
|
34
|
+
userType: user.type,
|
35
|
+
status: user.state
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
28
39
|
export function clearAccessTokenCookie(context) {
|
29
40
|
const { secure } = context
|
30
41
|
|
@@ -44,4 +55,5 @@ export function clearAccessTokenCookie(context) {
|
|
44
55
|
* https://github.com/hatiolab/things-factory/issues/70
|
45
56
|
*/
|
46
57
|
context.cookies.set('i18next', '', cookie)
|
58
|
+
context.session = null
|
47
59
|
}
|
package/translations/en.json
CHANGED
@@ -1,4 +1,23 @@
|
|
1
1
|
{
|
2
|
+
"error.auth error": "auth error. {message}",
|
3
|
+
"error.authn verification failed": "user credential verification failed.",
|
4
|
+
"error.confirm password not matched": "new password and confirm password is not matched",
|
5
|
+
"error.domain mismatch": "certificate is not for this domain",
|
6
|
+
"error.domain not allowed": "user not allowed domain `{subdomain}`",
|
7
|
+
"error.failed to find x": "failed to find {x}",
|
8
|
+
"error.password should match the rule": "password should match following rule. ${rule}",
|
9
|
+
"error.password used in the past": "password used in the past",
|
10
|
+
"error.subdomain not found": "domain not found",
|
11
|
+
"error.token or password is invalid": "token or password is invalid",
|
12
|
+
"error.unavailable-domain": "unavailable domain",
|
13
|
+
"error.user credential registeration failed": "user credential registration failed. It may be an already registered credential.",
|
14
|
+
"error.user credential registration not allowed": "user credential registration failed. The registration timed out or was not allowed.",
|
15
|
+
"error.user duplicated": "user duplicated",
|
16
|
+
"error.user not activated": "user is not activated",
|
17
|
+
"error.user not found": "user not found",
|
18
|
+
"error.user or verification token not found": "user or verification token not found",
|
19
|
+
"error.user validation failed": "user validation failed",
|
20
|
+
"error.x is not a member of y": "{x} is not a member of {y}",
|
2
21
|
"field.active": "active",
|
3
22
|
"field.appliance_id": "appliance id",
|
4
23
|
"field.brand": "brand",
|
@@ -13,43 +32,29 @@
|
|
13
32
|
"field.user_account": "user account",
|
14
33
|
"field.user_type": "user type",
|
15
34
|
"label.partner": "partner",
|
35
|
+
"privilege.category.system": "system setting",
|
36
|
+
"privilege.description": "to {name} {category} data",
|
37
|
+
"privilege.name.mutation": "edit",
|
38
|
+
"privilege.name.query": "read",
|
16
39
|
"text.account is reactivated": "account is reactivated",
|
17
40
|
"text.delete account succeed": "delete account succeed",
|
18
41
|
"text.inactive user": "inactive user",
|
19
42
|
"text.invalid verification token": "invalid verification token",
|
20
43
|
"text.invitation email sent": "invitation email sent",
|
21
|
-
"text.
|
22
|
-
"text.
|
23
|
-
"text.
|
44
|
+
"text.password changed successfully": "password changed successfully",
|
45
|
+
"text.password reset email sent": "password reset email sent",
|
46
|
+
"text.password reset succeed": "password reset succeed",
|
24
47
|
"text.pattern_atleast_1_digit": "at least 1 digit character",
|
48
|
+
"text.pattern_atleast_1_lowercase": "at least 1 lowercase character",
|
25
49
|
"text.pattern_atleast_1_special": "at least 1 special character(!@#$%^&*())",
|
50
|
+
"text.pattern_atleast_1_uppercase": "at least 1 uppercase character",
|
51
|
+
"text.pattern_minimum_charaters": "minimum {length} charaters",
|
26
52
|
"text.pattern_not_allowed": "not allowed repeated charater",
|
27
|
-
"text.password reset succeed": "password reset succeed",
|
28
|
-
"text.password changed successfully": "password changed successfully",
|
29
53
|
"text.profile changed successfully": "profile changed successfully",
|
30
54
|
"text.result": "result",
|
31
55
|
"text.signout successfully": "signout successfully",
|
32
|
-
"text.user registered successfully": "user registered successfully. find your email to activate account",
|
33
56
|
"text.user activated successfully": "user activated successfully",
|
34
|
-
"text.
|
35
|
-
"text.
|
36
|
-
"
|
37
|
-
|
38
|
-
"error.domain mismatch": "certificate is not for this domain",
|
39
|
-
"error.failed to find x": "failed to find {x}",
|
40
|
-
"error.password should match the rule": "password should match following rule. ${rule}",
|
41
|
-
"error.password used in the past": "password used in the past",
|
42
|
-
"error.subdomain not found": "domain not found",
|
43
|
-
"error.token or password is invalid": "token or password is invalid",
|
44
|
-
"error.unavailable-domain": "unavailable domain",
|
45
|
-
"error.user not found": "user not found",
|
46
|
-
"error.user duplicated": "user duplicated",
|
47
|
-
"error.user or verification token not found": "user or verification token not found",
|
48
|
-
"error.user validation failed": "user validation failed",
|
49
|
-
"error.user not activated": "user is not activated",
|
50
|
-
"error.x is not a member of y": "{x} is not a member of {y}",
|
51
|
-
"privilege.category.system": "system setting",
|
52
|
-
"privilege.description": "to {name} {category} data",
|
53
|
-
"privilege.name.mutation": "edit",
|
54
|
-
"privilege.name.query": "read"
|
55
|
-
}
|
57
|
+
"text.user credential registered successfully": "device registration has been successfully completed. You can now use biometric authentication.",
|
58
|
+
"text.user registered successfully": "user registered successfully. find your email to activate account",
|
59
|
+
"text.verification email sent": "verification email sent"
|
60
|
+
}
|
package/translations/ja.json
CHANGED
@@ -1,4 +1,23 @@
|
|
1
1
|
{
|
2
|
+
"error.auth error": "認証エラー。{message}",
|
3
|
+
"error.authn verification failed": "ユーザー認証に失敗しました。",
|
4
|
+
"error.confirm password not matched": "新しいパスワードと確認パスワードが一致しません.",
|
5
|
+
"error.domain mismatch": "証明書のドメインと現在のドメインが一致しません.",
|
6
|
+
"error.domain not allowed": "'{subdomain}' 領域はこのユーザに許可されていません.",
|
7
|
+
"error.failed to find x": "{x}が見つかりません.",
|
8
|
+
"error.password should match the rule": "パスワードは次の規則を守らなければなりません. {rule}",
|
9
|
+
"error.password used in the past": "過去に使用されたパスワードです.",
|
10
|
+
"error.subdomain not found": "サブドメインが見つかりません.",
|
11
|
+
"error.token or password is invalid": "トークンまたはパスワードが無効です.",
|
12
|
+
"error.unavailable-domain": "使用できないドメインです.",
|
13
|
+
"error.user credential registeration failed": "ユーザー資格情報の登録に失敗しました。既に登録されている資格情報の可能性があります。",
|
14
|
+
"error.user credential registration not allowed": "ユーザー資格情報の登録に失敗しました。登録のタイムアウトまたは登録が許可されていません。",
|
15
|
+
"error.user duplicated": "同じメールで登録されたアカウントが存在します.",
|
16
|
+
"error.user not activated": "ユーザーがアクティブ化されていません.",
|
17
|
+
"error.user not found": "ユーザーが存在しません.",
|
18
|
+
"error.user or verification token not found": "ユーザーまたは確認トークンが見つかりません.",
|
19
|
+
"error.user validation failed": "ユーザー確認に失敗しました.",
|
20
|
+
"error.x is not a member of y": "{x}は{y}のメンバーではありません.",
|
2
21
|
"field.active": "アクティブ",
|
3
22
|
"field.appliance_id": "器具ID",
|
4
23
|
"field.brand": "ブランド",
|
@@ -13,43 +32,29 @@
|
|
13
32
|
"field.user_account": "ユーザー アカウント",
|
14
33
|
"field.user_type": "ユーザー タイプ",
|
15
34
|
"label.partner": "パートナー",
|
35
|
+
"privilege.category.system": "システム設定",
|
36
|
+
"privilege.description": "{category}を{name}できる",
|
37
|
+
"privilege.name.mutation": "作成, 修正, 削除",
|
38
|
+
"privilege.name.query": "照会",
|
16
39
|
"text.account is reactivated": "アカウントが再アクティブ化されました.",
|
17
40
|
"text.delete account succeed": "アカウントが削除されました.",
|
41
|
+
"text.inactive user": "非アクティブユーザーです.",
|
18
42
|
"text.invalid verification token": "確認トークンが無効です.",
|
19
43
|
"text.invitation email sent": "招待メールを送りました.",
|
20
|
-
"text.
|
21
|
-
"text.
|
22
|
-
"text.
|
23
|
-
"text.pattern_atleast_1_uppercase": "少なくとも1つの大文字",
|
44
|
+
"text.password changed successfully": "パスワードが正常に変更されました.",
|
45
|
+
"text.password reset email sent": "パスワード リセットメールを送りました.",
|
46
|
+
"text.password reset succeed": "パスワードが正常にリセットされました.",
|
24
47
|
"text.pattern_atleast_1_digit": "少なくとも1つの数字",
|
48
|
+
"text.pattern_atleast_1_lowercase": "少なくとも1つの小文字",
|
25
49
|
"text.pattern_atleast_1_special": "少なくとも1つの特殊文字(!@#$%^&*())",
|
50
|
+
"text.pattern_atleast_1_uppercase": "少なくとも1つの大文字",
|
51
|
+
"text.pattern_minimum_charaters": "少なくとも{length}文字",
|
26
52
|
"text.pattern_not_allowed": "文字の繰り返し使用不可",
|
27
|
-
"text.password reset succeed": "パスワードが正常にリセットされました.",
|
28
|
-
"text.password changed successfully": "パスワードが正常に変更されました.",
|
29
53
|
"text.profile changed successfully": "プロフィールが正常に変更されました.",
|
30
|
-
"text.password reset email sent": "パスワード リセットメールを送りました.",
|
31
54
|
"text.result": "結果",
|
32
55
|
"text.signout successfully": "ログアウトに成功しました.",
|
33
|
-
"text.user registered successfully": "ユーザーが正常に登録されました. 確認メールでアカウントを有効にしてください.",
|
34
56
|
"text.user activated successfully": "ユーザーが正常に活性化されました.",
|
35
|
-
"text.
|
36
|
-
"
|
37
|
-
"
|
38
|
-
|
39
|
-
"error.failed to find x": "{x}が見つかりません.",
|
40
|
-
"error.password should match the rule": "パスワードは次の規則を守らなければなりません. {rule}",
|
41
|
-
"error.password used in the past": "過去に使用されたパスワードです.",
|
42
|
-
"error.subdomain not found": "サブドメインが見つかりません.",
|
43
|
-
"error.token or password is invalid": "トークンまたはパスワードが無効です.",
|
44
|
-
"error.unavailable-domain": "使用できないドメインです.",
|
45
|
-
"error.user not found": "ユーザーが存在しません.",
|
46
|
-
"error.user duplicated": "同じメールで登録されたアカウントが存在します.",
|
47
|
-
"error.user or verification token not found": "ユーザーまたは確認トークンが見つかりません.",
|
48
|
-
"error.user validation failed": "ユーザー確認に失敗しました.",
|
49
|
-
"error.user not activated": "ユーザーがアクティブ化されていません.",
|
50
|
-
"error.x is not a member of y": "{x}は{y}のメンバーではありません.",
|
51
|
-
"privilege.category.system": "システム設定",
|
52
|
-
"privilege.description": "{category}を{name}できる",
|
53
|
-
"privilege.name.mutation": "作成, 修正, 削除",
|
54
|
-
"privilege.name.query": "照会"
|
55
|
-
}
|
57
|
+
"text.user credential registered successfully": "デバイスの登録が正常に完了しました。今後は生体認証を使用できます。",
|
58
|
+
"text.user registered successfully": "ユーザーが正常に登録されました. 確認メールでアカウントを有効にしてください.",
|
59
|
+
"text.verification email sent": "確認メールを送りました."
|
60
|
+
}
|
package/translations/ko.json
CHANGED
@@ -1,4 +1,24 @@
|
|
1
1
|
{
|
2
|
+
"error.auth error": "인증 오류. {message}",
|
3
|
+
"error.authn verification failed": "사용자 자격 증명을 실패하였습니다.",
|
4
|
+
"error.confirm password not matched": "새 비밀번호와 확인 비밀번호가 일치하지 않습니다.",
|
5
|
+
"error.domain mismatch": "인증서의 도메인과 현재 도메인이 일치하지 않습니다.",
|
6
|
+
"error.domain not allowed": "'{subdomain}' 영역은 이 사용자에게 허가되지 않았습니다.",
|
7
|
+
"error.failed to find x": "{x}을(를) 찾을 수 없습니다.",
|
8
|
+
"error.password should match the rule": "비밀번호는 다음 규칙을 지켜야 합니다. {rule}",
|
9
|
+
"error.password used in the past": "과거에 사용된 비밀번호입니다.",
|
10
|
+
"error.subdomain not found": "서브도메인을 찾을 수 없습니다.",
|
11
|
+
"error.token or password is invalid": "토큰 또는 비밀번호가 유효하지 않습니다.",
|
12
|
+
"error.unavailable-domain": "사용할 수 없는 도메인입니다.",
|
13
|
+
"error.user credential not found": "사용자 자격 증명을 찾을 수 없습니다. 바이오메트릭 인증을 사용하기 위해서는 먼저 기기를 등록해야 합니다.",
|
14
|
+
"error.user duplicated": "동일한 이메일로 가입된 계정이 이미 존재합니다.",
|
15
|
+
"error.user not activated": "사용자가 활성화되지 않았습니다.",
|
16
|
+
"error.user not found": "사용자가 존재하지 않습니다.",
|
17
|
+
"error.user or verification token not found": "사용자 또는 확인토큰을 찾을 수 없습니다.",
|
18
|
+
"error.user credential registeration failed": "사용자 인증서 등록이 실패하였습니다. 이미 등록된 인증서일 수 있습니다.",
|
19
|
+
"error.user credential registration not allowed": "사용자 인증서 등록이 실패하였습니다. 등록 시간이 초과되었거나 등록이 허용되지 않았습니다.",
|
20
|
+
"error.user validation failed": "사용자 확인에 실패하였습니다.",
|
21
|
+
"error.x is not a member of y": "{x}은(는) {y}의 멤버가 아닙니다.",
|
2
22
|
"field.active": "활성화",
|
3
23
|
"field.appliance_id": "기구 아이디",
|
4
24
|
"field.brand": "브랜드",
|
@@ -13,43 +33,29 @@
|
|
13
33
|
"field.user_account": "사용자 계정",
|
14
34
|
"field.user_type": "사용자 유형",
|
15
35
|
"label.partner": "파트너",
|
36
|
+
"privilege.category.system": "시스템 설정",
|
37
|
+
"privilege.description": "{category}를 {name}할 수 있음",
|
38
|
+
"privilege.name.mutation": "생성, 수정, 삭제",
|
39
|
+
"privilege.name.query": "조회",
|
16
40
|
"text.account is reactivated": "계정이 재 활성화되었습니다.",
|
17
41
|
"text.delete account succeed": "계정이 삭제되었습니다.",
|
42
|
+
"text.inactive user": "비활성 사용자입니다.",
|
18
43
|
"text.invalid verification token": "확인 토큰이 유효하지 않습니다.",
|
19
44
|
"text.invitation email sent": "초대 이메일을 보냈습니다.",
|
20
|
-
"text.
|
21
|
-
"text.
|
22
|
-
"text.
|
23
|
-
"text.pattern_atleast_1_uppercase": "최소 1개 대문자",
|
45
|
+
"text.password changed successfully": "비밀번호가 성공적으로 변경되었습니다.",
|
46
|
+
"text.password reset email sent": "비밀번호 재설정 이메일을 보냈습니다.",
|
47
|
+
"text.password reset succeed": "비밀번호 성공적으로 재설정되었습니다.",
|
24
48
|
"text.pattern_atleast_1_digit": "최소 1개 숫자",
|
49
|
+
"text.pattern_atleast_1_lowercase": "최소 1개 소문자",
|
25
50
|
"text.pattern_atleast_1_special": "최소 1개 특수문자(!@#$%^&*())",
|
51
|
+
"text.pattern_atleast_1_uppercase": "최소 1개 대문자",
|
52
|
+
"text.pattern_minimum_charaters": "최소 {length} 글자",
|
26
53
|
"text.pattern_not_allowed": "문자 반복 사용 불가",
|
27
|
-
"text.password reset succeed": "비밀번호 성공적으로 재설정되었습니다.",
|
28
|
-
"text.password changed successfully": "비밀번호가 성공적으로 변경되었습니다.",
|
29
54
|
"text.profile changed successfully": "프로필이 성공적으로 변경되었습니다.",
|
30
|
-
"text.password reset email sent": "비밀번호 재설정 이메일을 보냈습니다.",
|
31
55
|
"text.result": "결과",
|
32
56
|
"text.signout successfully": "성공적으로 로그아웃 하였습니다.",
|
33
|
-
"text.user registered successfully": "사용자가 성공적으로 등록되었습니다. 확인 이메일을 통해서 계정을 활성화하시기 바랍니다.",
|
34
57
|
"text.user activated successfully": "사용자가 성공적으로 활성화되었습니다.",
|
35
|
-
"text.
|
36
|
-
"
|
37
|
-
"
|
38
|
-
|
39
|
-
"error.failed to find x": "{x}을(를) 찾을 수 없습니다.",
|
40
|
-
"error.password should match the rule": "비밀번호는 다음 규칙을 지켜야 합니다. {rule}",
|
41
|
-
"error.password used in the past": "과거에 사용된 비밀번호입니다.",
|
42
|
-
"error.subdomain not found": "서브도메인을 찾을 수 없습니다.",
|
43
|
-
"error.token or password is invalid": "토큰 또는 비밀번호가 유효하지 않습니다.",
|
44
|
-
"error.unavailable-domain": "사용할 수 없는 도메인입니다.",
|
45
|
-
"error.user not found": "사용자가 존재하지 않습니다.",
|
46
|
-
"error.user duplicated": "동일한 이메일로 가입된 계정이 이미 존재합니다.",
|
47
|
-
"error.user or verification token not found": "사용자 또는 확인토큰을 찾을 수 없습니다.",
|
48
|
-
"error.user validation failed": "사용자 확인에 실패하였습니다.",
|
49
|
-
"error.user not activated": "사용자가 활성화되지 않았습니다.",
|
50
|
-
"error.x is not a member of y": "{x}은(는) {y}의 멤버가 아닙니다.",
|
51
|
-
"privilege.category.system": "시스템 설정",
|
52
|
-
"privilege.description": "{category}를 {name}할 수 있음",
|
53
|
-
"privilege.name.mutation": "생성, 수정, 삭제",
|
54
|
-
"privilege.name.query": "조회"
|
55
|
-
}
|
58
|
+
"text.user credential registered successfully": "기기 등록이 성공적으로 완료되었습니다. 이제 바이오메트릭 인증을 사용할 수 있습니다.",
|
59
|
+
"text.user registered successfully": "사용자가 성공적으로 등록되었습니다. 확인 이메일을 통해서 계정을 활성화하시기 바랍니다.",
|
60
|
+
"text.verification email sent": "확인 이메일을 보냈습니다."
|
61
|
+
}
|
package/translations/ms.json
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
{
|
2
|
+
"error.auth error": "ralat pengesahan. {message}",
|
3
|
+
"error.authn verification failed": "pengesahan kelayakan pengguna gagal.",
|
2
4
|
"error.confirm password not matched": "Kata laluan baru dan pengesahan kata laluan tidak sepadan",
|
3
5
|
"error.domain mismatch": "Sijil tidak sesuai untuk domain ini",
|
4
6
|
"error.domain not allowed": "Pengguna tidak dibenarkan domain `{subdomain}`",
|
@@ -8,6 +10,8 @@
|
|
8
10
|
"error.subdomain not found": "Domain tidak ditemui",
|
9
11
|
"error.token or password is invalid": "Token atau kata laluan tidak sah",
|
10
12
|
"error.unavailable-domain": "Domain tidak tersedia",
|
13
|
+
"error.user credential registeration failed": "pendaftaran kelayakan pengguna gagal. Mungkin kelayakan tersebut sudah didaftarkan.",
|
14
|
+
"error.user credential registration not allowed": "pendaftaran kelayakan pengguna gagal. Masa pendaftaran telah tamat atau pendaftaran tidak dibenarkan.",
|
11
15
|
"error.user duplicated": "Emel telah digunakan oleh akaun lain",
|
12
16
|
"error.user not activated": "Pengguna tidak diaktifkan",
|
13
17
|
"error.user not found": "Pengguna tidak ditemui",
|
@@ -50,6 +54,7 @@
|
|
50
54
|
"text.result": "Hasil",
|
51
55
|
"text.signout successfully": "Berjaya keluar",
|
52
56
|
"text.user activated successfully": "Pengguna diaktifkan dengan berjaya",
|
57
|
+
"text.user credential registered successfully": "pendaftaran peranti berjaya diselesaikan. Kini anda boleh menggunakan pengesahan biometrik.",
|
53
58
|
"text.user registered successfully": "Pengguna berjaya didaftarkan. Cari e-mel anda untuk mengaktifkan akaun",
|
54
59
|
"text.verification email sent": "E-mel pengesahan telah dihantar"
|
55
60
|
}
|
package/translations/zh.json
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
{
|
2
|
+
"error.auth error": "认证错误。{message}",
|
3
|
+
"error.authn verification failed": "用户认证失败。",
|
4
|
+
"error.user verification failed": "用户验证失败",
|
2
5
|
"error.confirm password not matched": "新密码与确认密码不匹配!",
|
3
6
|
"error.domain mismatch": "证书不适用于该域!",
|
4
7
|
"error.domain not allowed": "用户无权限使用`{subdomain}`域!",
|
@@ -8,6 +11,8 @@
|
|
8
11
|
"error.subdomain not found": "用户域查询失败!",
|
9
12
|
"error.token or password is invalid": "令牌或密码无效!",
|
10
13
|
"error.unavailable-domain": "不可用的域名",
|
14
|
+
"error.user credential registeration failed": "用户凭证注册失败。可能是已注册的凭证。",
|
15
|
+
"error.user credential registration not allowed": "用户凭证注册失败。注册超时或注册不被允许。",
|
11
16
|
"error.user duplicated": "有一个用户帐户使用相同的电子邮件",
|
12
17
|
"error.user not activated": "用户未激活!",
|
13
18
|
"error.user not found": "找不到用户",
|
@@ -50,6 +55,7 @@
|
|
50
55
|
"text.result": "结果",
|
51
56
|
"text.signout successfully": "登出成功。",
|
52
57
|
"text.user activated successfully": "用户激活成功",
|
58
|
+
"text.user credential registered successfully": "设备注册已成功完成。现在可以使用生物识别认证。",
|
53
59
|
"text.user registered successfully": "用户注册成功。 请查看电子邮件以激活帐户。",
|
54
60
|
"text.verification email sent": "验证邮件已发送"
|
55
61
|
}
|