/
ruleAuth.ts
36 lines (32 loc) · 1.42 KB
/
ruleAuth.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { createRuleString, createRuleStringArray } from './ruleString'
import { RuleAuth, RuleAuthToken, RuleAuthTokenFirebase } from './types'
const createRuleAuthTokenFirebase = (name: string): RuleAuthTokenFirebase => ({
identities: {
'email': createRuleStringArray(`${name}["email"]`),
'phone': createRuleStringArray(`${name}["phone"]`),
'google.com': createRuleStringArray(`${name}["google.com"]`),
'facebook.com': createRuleStringArray(`${name}["facebook.com"]`),
'github.com': createRuleStringArray(`${name}["github.com"]`),
'twitter.com': createRuleStringArray(`${name}["twitter.com"]`)
},
sign_in_provider: createRuleString(`${name}.sign_in_provider`)
})
const createRuleAuthToken = (name: string): RuleAuthToken => ({
email: createRuleString(`${name}.email`),
email_verified: () => `${name}.email_verified`,
phone_number: createRuleString(`${name}.phone_number`),
name: createRuleString(`${name}.name`),
sub: createRuleString(`${name}.sub`),
firebase: createRuleAuthTokenFirebase(`${name}.firebase`),
iss: createRuleString(`${name}.iss`),
aud: createRuleString(`${name}.aud`),
auth_time: () => `${name}.auth_time`,
iat: () => `${name}.iat`,
exp: () => `${name}.exp`
})
const createRuleAuth = (name: string): RuleAuth => ({
uid: createRuleString(`${name}.uid`),
provider: createRuleString(`${name}.provider`),
token: createRuleAuthToken(`${name}.token`)
})
export { createRuleAuth }