-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathextension.yaml
131 lines (117 loc) · 4.94 KB
/
extension.yaml
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Learn detailed information about the fields of an extension.yaml file in the docs:
# https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml
name: firestore-auth-claims # Identifier for your extension
version: 0.1.2 # Follow semver versioning
specVersion: v1beta # Version of the Firebase Extensions specification
author:
authorName: Firebase
url: https://firebase.google.com
contributors:
- authorName: Michael Bleigh
email: [email protected]
url: https://github.com/mbleigh
# Friendly display name for your extension (~3-5 words)
displayName: Set Auth claims with Firestore
# Brief description of the task your extension performs (~1 sentence)
description: >-
Set custom claims for Firebase Auth users from values set in Firestore.
license: Apache-2.0 # https://spdx.org/licenses/
# Public URL for the source code of your extension
sourceUrl: https://github.com/FirebaseExtended/experimental-extensions/tree/main/firestore-auth-claims
# Specify whether a paid-tier billing plan is required to use your extension.
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#billing-required-field
billingRequired: true
# In an `apis` field, list any Google APIs (like Cloud Translation, BigQuery, etc.)
# required for your extension to operate.
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#apis-field
# In a `roles` field, list any IAM access roles required for your extension to operate.
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#roles-field
roles:
- role: firebaseauth.admin
reason: Allows the extension to set custom claims on Firebase Auth users.
- role: datastore.user
reason: Allows the extension to write sync information back to Firestore.
# In the `resources` field, list each of your extension's functions, including the trigger for each function.
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#resources-field
resources:
- name: sync
type: firebaseextensions.v1beta.function
description:
Processes document changes in the specified Cloud Firestore collection,
syncing them to custom claims in Firebase Auth users.
properties:
location: ${param:LOCATION}
runtime: nodejs12
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${param:PROJECT_ID}/databases/(default)/documents/${param:CLAIMS_COLLECTION}/{id}
# In the `params` field, set up your extension's user-configured parameters.
# Learn more in the docs: https://firebase.google.com/docs/extensions/alpha/ref-extension-yaml#params-field
params:
- param: CLAIMS_COLLECTION
label: Claims Collection
description: >-
Firestore collection in which custom claims are stored. Must use Firebase
Auth UIDs as document IDs.
type: string
default: user_claims
required: true
immutable: false
- param: CLAIMS_FIELD
label: Claims Field
description: >-
The document field in which custom claims are stored. Leave blank to use
all document data as custom claims. Custom claims must be an object.
type: string
required: false
immutable: false
- param: LOCATION
label: Cloud Functions location
description: >-
Where do you want to deploy the functions created for this extension? You
usually want a location close to your database. For help selecting a
location, refer to the [location selection
guide](https://firebase.google.com/docs/functions/locations).
type: select
options:
- label: Iowa (us-central1)
value: us-central1
- label: South Carolina (us-east1)
value: us-east1
- label: Northern Virginia (us-east4)
value: us-east4
- label: Los Angeles (us-west2)
value: us-west2
- label: Salt Lake City (us-west3)
value: us-west3
- label: Las Vegas (us-west4)
value: us-west4
- label: Belgium (europe-west1)
value: europe-west1
- label: London (europe-west2)
value: europe-west2
- label: Frankfurt (europe-west3)
value: europe-west3
- label: Zurich (europe-west6)
value: europe-west6
- label: Hong Kong (asia-east2)
value: asia-east2
- label: Tokyo (asia-northeast1)
value: asia-northeast1
- label: Osaka (asia-northeast2)
value: asia-northeast2
- label: Seoul (asia-northeast3)
value: asia-northeast3
- label: Mumbai (asia-south1)
value: asia-south1
- label: Jakarta (asia-southeast2)
value: asia-southeast2
- label: Montreal (northamerica-northeast1)
value: northamerica-northeast1
- label: Sao Paulo (southamerica-east1)
value: southamerica-east1
- label: Sydney (australia-southeast1)
value: australia-southeast1
default: us-central1
required: true
immutable: true