@openbrf/plugin-sdk 0.0.0-stage → 1.2.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/LICENSE +661 -0
- package/LICENSE-EXCEPTION.md +28 -0
- package/README.md +94 -2
- package/dist/abort-signal.d.ts +23 -0
- package/dist/abort-signal.d.ts.map +1 -0
- package/dist/abort-signal.js +2 -0
- package/dist/abort-signal.js.map +1 -0
- package/dist/action-refusal.d.ts +101 -0
- package/dist/action-refusal.d.ts.map +1 -0
- package/dist/action-refusal.js +96 -0
- package/dist/action-refusal.js.map +1 -0
- package/dist/action-schema.d.ts +42 -0
- package/dist/action-schema.d.ts.map +1 -0
- package/dist/action-schema.js +67 -0
- package/dist/action-schema.js.map +1 -0
- package/dist/actions.d.ts +287 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +68 -0
- package/dist/actions.js.map +1 -0
- package/dist/api-version.d.ts +23 -0
- package/dist/api-version.d.ts.map +1 -0
- package/dist/api-version.js +27 -0
- package/dist/api-version.js.map +1 -0
- package/dist/blocks.d.ts +310 -0
- package/dist/blocks.d.ts.map +1 -0
- package/dist/blocks.js +185 -0
- package/dist/blocks.js.map +1 -0
- package/dist/catalog.d.ts +707 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +567 -0
- package/dist/catalog.js.map +1 -0
- package/dist/define-plugin.d.ts +14 -0
- package/dist/define-plugin.d.ts.map +1 -0
- package/dist/define-plugin.js +15 -0
- package/dist/define-plugin.js.map +1 -0
- package/dist/entitlements.d.ts +117 -0
- package/dist/entitlements.d.ts.map +1 -0
- package/dist/entitlements.js +62 -0
- package/dist/entitlements.js.map +1 -0
- package/dist/extensions.d.ts +183 -0
- package/dist/extensions.d.ts.map +1 -0
- package/dist/extensions.js +67 -0
- package/dist/extensions.js.map +1 -0
- package/dist/finances.d.ts +294 -0
- package/dist/finances.d.ts.map +1 -0
- package/dist/finances.js +56 -0
- package/dist/finances.js.map +1 -0
- package/dist/findings.d.ts +156 -0
- package/dist/findings.d.ts.map +1 -0
- package/dist/findings.js +146 -0
- package/dist/findings.js.map +1 -0
- package/dist/host.d.ts +827 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +80 -0
- package/dist/host.js.map +1 -0
- package/dist/imports.d.ts +104 -0
- package/dist/imports.d.ts.map +1 -0
- package/dist/imports.js +70 -0
- package/dist/imports.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/integrity.d.ts +38 -0
- package/dist/integrity.d.ts.map +1 -0
- package/dist/integrity.js +105 -0
- package/dist/integrity.js.map +1 -0
- package/dist/localized-text.d.ts +18 -0
- package/dist/localized-text.d.ts.map +1 -0
- package/dist/localized-text.js +17 -0
- package/dist/localized-text.js.map +1 -0
- package/dist/manifest.d.ts +1122 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +1118 -0
- package/dist/manifest.js.map +1 -0
- package/dist/module.d.ts +35 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +2 -0
- package/dist/module.js.map +1 -0
- package/dist/package-check.d.ts +66 -0
- package/dist/package-check.d.ts.map +1 -0
- package/dist/package-check.js +755 -0
- package/dist/package-check.js.map +1 -0
- package/dist/permissions.d.ts +224 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +277 -0
- package/dist/permissions.js.map +1 -0
- package/dist/recipients.d.ts +139 -0
- package/dist/recipients.d.ts.map +1 -0
- package/dist/recipients.js +223 -0
- package/dist/recipients.js.map +1 -0
- package/dist/records.d.ts +130 -0
- package/dist/records.d.ts.map +1 -0
- package/dist/records.js +85 -0
- package/dist/records.js.map +1 -0
- package/dist/require-capability.d.ts +37 -0
- package/dist/require-capability.d.ts.map +1 -0
- package/dist/require-capability.js +88 -0
- package/dist/require-capability.js.map +1 -0
- package/dist/settings-schema.d.ts +130 -0
- package/dist/settings-schema.d.ts.map +1 -0
- package/dist/settings-schema.js +272 -0
- package/dist/settings-schema.js.map +1 -0
- package/dist/standard-schema.d.ts +43 -0
- package/dist/standard-schema.d.ts.map +1 -0
- package/dist/standard-schema.js +2 -0
- package/dist/standard-schema.js.map +1 -0
- package/package.json +55 -3
- package/src/abort-signal.ts +22 -0
- package/src/action-refusal.ts +178 -0
- package/src/action-schema.ts +89 -0
- package/src/actions.ts +344 -0
- package/src/api-version.ts +28 -0
- package/src/blocks.ts +289 -0
- package/src/catalog.ts +679 -0
- package/src/define-plugin.ts +18 -0
- package/src/entitlements.ts +150 -0
- package/src/extensions.ts +212 -0
- package/src/finances.ts +317 -0
- package/src/findings.ts +163 -0
- package/src/host.ts +894 -0
- package/src/imports.ts +135 -0
- package/src/index.ts +316 -0
- package/src/integrity.ts +125 -0
- package/src/localized-text.ts +19 -0
- package/src/manifest.ts +1412 -0
- package/src/module.ts +38 -0
- package/src/package-check.ts +894 -0
- package/src/permissions.ts +295 -0
- package/src/recipients.ts +294 -0
- package/src/records.ts +172 -0
- package/src/require-capability.ts +106 -0
- package/src/settings-schema.ts +334 -0
- package/src/standard-schema.ts +39 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-check.js","sourceRoot":"","sources":["../src/package-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a plugin may ask the host for.
|
|
3
|
+
*
|
|
4
|
+
* The list is deliberately short and read-only. A backend plugin runs at full
|
|
5
|
+
* process privilege (ADR 0003 - there is no sandbox in v1), so these
|
|
6
|
+
* permissions are not a security boundary against hostile code; they are the
|
|
7
|
+
* declaration the board consents to before an install, and the boundary the
|
|
8
|
+
* SDK enforces against an honest plugin reaching further than it said it
|
|
9
|
+
* would. Curation of the catalog is what stands between an instance and
|
|
10
|
+
* hostile code, and the revisit trigger in ADR 0003 records when that changes.
|
|
11
|
+
*
|
|
12
|
+
* No permission grants write access to the register in v0. A plugin that
|
|
13
|
+
* needs to change resident data is a core feature request, not a plugin.
|
|
14
|
+
*
|
|
15
|
+
* A new value here is a new member of the catalog's permission list, and an
|
|
16
|
+
* instance that does not know it refuses the whole catalog index that carries
|
|
17
|
+
* it. The catalog therefore lists an entry asking for one of the content
|
|
18
|
+
* permissions below only in an index that older instances do not read: the
|
|
19
|
+
* version 2 index (ADR 0032).
|
|
20
|
+
*/
|
|
21
|
+
export declare const PLUGIN_PERMISSIONS: readonly [
|
|
22
|
+
/**
|
|
23
|
+
* Apartments, names, who is a resident, who is a member, and when a person
|
|
24
|
+
* moved in or out. Never contact details, never personal identity numbers,
|
|
25
|
+
* and never a person flagged with protected personal data - those are
|
|
26
|
+
* excluded from every plugin read regardless of permission (plan section
|
|
27
|
+
* 4.4).
|
|
28
|
+
*
|
|
29
|
+
* Board positions are not in it. Who sits on the board is a core capability,
|
|
30
|
+
* read nowhere in the host object a plugin is given.
|
|
31
|
+
*/
|
|
32
|
+
"addressBook:read",
|
|
33
|
+
/**
|
|
34
|
+
* Additionally email and phone. Separate from addressBook:read because
|
|
35
|
+
* contact data is board-only in the core product, so a plugin asking for it
|
|
36
|
+
* is asking for markedly more than one that only needs to know who lives
|
|
37
|
+
* where.
|
|
38
|
+
*/
|
|
39
|
+
"addressBook:readContact",
|
|
40
|
+
/** Send mail through the instance's configured SMTP server. */
|
|
41
|
+
"mail:send",
|
|
42
|
+
/**
|
|
43
|
+
* Send text messages through the instance's configured SMS provider.
|
|
44
|
+
*
|
|
45
|
+
* Separate from mail:send because the two do not cost the association the
|
|
46
|
+
* same thing. Mail leaves through a server the instance is already set up
|
|
47
|
+
* for; a text message is billed per message against a provider contract the
|
|
48
|
+
* board signed, and an instance that has bought none cannot send one at all.
|
|
49
|
+
*/
|
|
50
|
+
"sms:send",
|
|
51
|
+
/** Register background workers and enqueue or schedule jobs. */
|
|
52
|
+
"jobs:schedule",
|
|
53
|
+
/**
|
|
54
|
+
* The fee notification runs and their notices, and the charges to members,
|
|
55
|
+
* as the board's own documents state them, and the events that say one was
|
|
56
|
+
* issued, recorded, corrected or removed.
|
|
57
|
+
*
|
|
58
|
+
* Masked as the files the board hands over are, and further: the names on a
|
|
59
|
+
* notice whose household holds a person with protected personal data are
|
|
60
|
+
* withheld, as on the fee notice file, and a charge on such a person withholds
|
|
61
|
+
* who and where entirely, where the debiting list withholds only where. A
|
|
62
|
+
* plugin is further from the board than the economic manager is, and the
|
|
63
|
+
* address book's rule that a protected person never reaches a plugin holds
|
|
64
|
+
* here too. A personal identity number is never returned, and there is no
|
|
65
|
+
* payment state to return: core records none.
|
|
66
|
+
*/
|
|
67
|
+
"finances:read",
|
|
68
|
+
/**
|
|
69
|
+
* Record that a fee notice or a charge was delivered: by which route, when,
|
|
70
|
+
* and under which reference the receiving system knows it. A receipt and
|
|
71
|
+
* never a paid flag. Separate from finances:read because it writes, and the
|
|
72
|
+
* board consents to a plugin that only reads the books knowing that it cannot
|
|
73
|
+
* add anything to them.
|
|
74
|
+
*/
|
|
75
|
+
"finances:recordDelivery",
|
|
76
|
+
/**
|
|
77
|
+
* Add blocks to the association's website.
|
|
78
|
+
*
|
|
79
|
+
* What such a block renders is published to anybody who reads the page,
|
|
80
|
+
* account or not, which is why it is a permission the board consents to
|
|
81
|
+
* rather than something a manifest may simply declare. The host prints what
|
|
82
|
+
* the block renders through an allowlist of elements, so it is never a
|
|
83
|
+
* script, a stylesheet or a resource from another host - but the words in it
|
|
84
|
+
* are the plugin's to choose.
|
|
85
|
+
*/
|
|
86
|
+
"site:blocks",
|
|
87
|
+
/**
|
|
88
|
+
* The association's published news items: the title, the body's text, when
|
|
89
|
+
* each was published and whether it is for the members or for anyone.
|
|
90
|
+
*
|
|
91
|
+
* Not a register permission. It reads what the board has already
|
|
92
|
+
* published, and never who wrote an item, a comment on it or who read it
|
|
93
|
+
* (ADR 0032). The text is the board's and may name somebody, which is why a
|
|
94
|
+
* plugin holding it declares `freeText`.
|
|
95
|
+
*/
|
|
96
|
+
"news:read",
|
|
97
|
+
/**
|
|
98
|
+
* The published events and their occurrences, and the notice of every
|
|
99
|
+
* general meeting that has been called and not yet held.
|
|
100
|
+
*
|
|
101
|
+
* Never a sign-up, a roll-call, an attendance or a proxy: how many places
|
|
102
|
+
* are left at an occurrence is the most it says about who is coming. Like
|
|
103
|
+
* news:read, it reads the board's text and declares `freeText`.
|
|
104
|
+
*/
|
|
105
|
+
"calendar:read",
|
|
106
|
+
/**
|
|
107
|
+
* The bookable resources the house offers, and when each is taken. Never by
|
|
108
|
+
* whom: no booker, no apartment, no booking's identifier, and two bookings
|
|
109
|
+
* that touch are one interval (ADR 0032).
|
|
110
|
+
*/
|
|
111
|
+
"bookings:readAvailability",
|
|
112
|
+
/**
|
|
113
|
+
* A stored picture, by its id: one held for anyone or for the members, whose
|
|
114
|
+
* upload declared that it shows no identifiable person (ADR 0032).
|
|
115
|
+
*
|
|
116
|
+
* Never a document, never a household's or the board's file, and never a
|
|
117
|
+
* picture of people: a photograph of a person needs a publication consent,
|
|
118
|
+
* and the consent the core records is for the website, not for wherever a
|
|
119
|
+
* plugin puts the picture. A picture is still a photograph, which is why a
|
|
120
|
+
* plugin holding it declares `photograph`.
|
|
121
|
+
*/
|
|
122
|
+
"media:read",
|
|
123
|
+
/**
|
|
124
|
+
* The association's addresses: the street and number of each entrance, and
|
|
125
|
+
* nothing about who lives at them. Not addressBook:read, which reads the
|
|
126
|
+
* apartments and the people in them.
|
|
127
|
+
*/
|
|
128
|
+
"addresses:read",
|
|
129
|
+
/**
|
|
130
|
+
* Install and update themes on the instance (ADR 0046).
|
|
131
|
+
*
|
|
132
|
+
* A theme is data and passes the same install lint however it arrives, so
|
|
133
|
+
* this grants no way past the theme gate: what a board consents to is a
|
|
134
|
+
* plugin putting themes on the instance's theme screen, for an
|
|
135
|
+
* administrator to preview and activate there. Each install is made for a
|
|
136
|
+
* person in the web interface who may install themes, never by the plugin on
|
|
137
|
+
* its own.
|
|
138
|
+
*/
|
|
139
|
+
"themes:install",
|
|
140
|
+
/**
|
|
141
|
+
* Hand a member list to the core for the board to review (ADR 0043).
|
|
142
|
+
*
|
|
143
|
+
* The one way a plugin brings data towards the register, and it writes
|
|
144
|
+
* nothing: the core holds the file as an import proposal on its own import
|
|
145
|
+
* screen, and a board member previews, decides and applies it there, or
|
|
146
|
+
* rejects it. It grants no read of the register and raises no route's
|
|
147
|
+
* capability floor, so the plugin learns nothing about what the file would
|
|
148
|
+
* do. It does hold the file, though, which can carry every personal identity
|
|
149
|
+
* number in the cooperative and rows about persons with protected personal
|
|
150
|
+
* data, so a manifest declaring it declares those categories too.
|
|
151
|
+
*/
|
|
152
|
+
"addressBook:proposeImport"];
|
|
153
|
+
export type PluginPermission = (typeof PLUGIN_PERMISSIONS)[number];
|
|
154
|
+
export declare function isPluginPermission(value: string): value is PluginPermission;
|
|
155
|
+
/**
|
|
156
|
+
* Whether a permission lets a plugin read the register, or the finances that
|
|
157
|
+
* carry the names of the people in it.
|
|
158
|
+
*
|
|
159
|
+
* Every permission is classified, and the record is typed against
|
|
160
|
+
* `PluginPermission`, so a permission added to the list above fails to compile
|
|
161
|
+
* until somebody has said which it is. That is the point of a classification
|
|
162
|
+
* over a list of the refused: the rules that keep a plugin with a device route
|
|
163
|
+
* or a website block away from the register (ADR 0006, ADR 0031) hold a new
|
|
164
|
+
* permission that reads it out unless somebody remembers to add it to each.
|
|
165
|
+
* `finances:recordDelivery` writes a receipt and returns no one's details, so
|
|
166
|
+
* it is not a read. The content permissions (`news:read`, `calendar:read`,
|
|
167
|
+
* `bookings:readAvailability`, `media:read`, `addresses:read`) read what the
|
|
168
|
+
* website publishes, never the register, so a plugin with a device route may
|
|
169
|
+
* hold them; the host withholds text that names a resident from such a plugin.
|
|
170
|
+
*/
|
|
171
|
+
export declare const PERMISSION_REGISTER_ACCESS: {
|
|
172
|
+
readonly "addressBook:read": "reads";
|
|
173
|
+
readonly "addressBook:readContact": "reads";
|
|
174
|
+
readonly "mail:send": "none";
|
|
175
|
+
readonly "sms:send": "none";
|
|
176
|
+
readonly "jobs:schedule": "none";
|
|
177
|
+
readonly "finances:read": "reads";
|
|
178
|
+
readonly "finances:recordDelivery": "none";
|
|
179
|
+
readonly "site:blocks": "none";
|
|
180
|
+
readonly "themes:install": "none";
|
|
181
|
+
readonly "news:read": "none";
|
|
182
|
+
readonly "calendar:read": "none";
|
|
183
|
+
readonly "bookings:readAvailability": "none";
|
|
184
|
+
readonly "media:read": "none";
|
|
185
|
+
readonly "addresses:read": "none";
|
|
186
|
+
readonly "addressBook:proposeImport": "none";
|
|
187
|
+
};
|
|
188
|
+
/** The permissions that read the register, in the order of the list above. */
|
|
189
|
+
export declare const REGISTER_READING_PERMISSIONS: readonly PluginPermission[];
|
|
190
|
+
/** Whether any of the permissions a manifest asks for reads the register. */
|
|
191
|
+
export declare function readsRegister(permissions: readonly string[]): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Categories of personal data a plugin declares it will process.
|
|
194
|
+
*
|
|
195
|
+
* Shown on the consent screen before an install, and stored with the
|
|
196
|
+
* installation as the snapshot the board agreed to. Installing the plugin
|
|
197
|
+
* writes them into the association's record of processing activities (GDPR
|
|
198
|
+
* art. 30) as the categories that processing touches. It is a declaration, not
|
|
199
|
+
* an enforcement point: what the plugin can actually reach follows from its
|
|
200
|
+
* permissions above and from the actions it is allowed to call.
|
|
201
|
+
*
|
|
202
|
+
* Not only the register. A plugin that dispatches core actions handles
|
|
203
|
+
* whatever those actions return: an assistant passing issue reports and
|
|
204
|
+
* minutes to a model provider handles free text, and one reading charges
|
|
205
|
+
* handles financial data. So the list is ACTION_PERSONAL_DATA, in its order.
|
|
206
|
+
*
|
|
207
|
+
* Two of them only one kind of plugin may declare. A personal identity number
|
|
208
|
+
* is never returned to a plugin, and a person with protected personal data
|
|
209
|
+
* (skyddade personuppgifter) never appears in one's reads at all, so for any
|
|
210
|
+
* other plugin a declaration naming either would describe something that
|
|
211
|
+
* cannot happen. A plugin that proposes an import carries the member list the
|
|
212
|
+
* other way, and that list can hold both (ADR 0043): the manifest refuses
|
|
213
|
+
* either category without `addressBook:proposeImport`, and requires both with
|
|
214
|
+
* it.
|
|
215
|
+
*/
|
|
216
|
+
export declare const PLUGIN_PERSONAL_DATA_CATEGORIES: readonly ["name", "apartment", "residency", "email", "phone", "postalAddress", "personalIdentityNumber", "account", "financial", "health", "photograph", "freeText", "auditTrail", "protected"];
|
|
217
|
+
/**
|
|
218
|
+
* The personal data categories a plugin that proposes an import must declare,
|
|
219
|
+
* and the two no other plugin may.
|
|
220
|
+
*/
|
|
221
|
+
export declare const PROPOSE_IMPORT_PERSONAL_DATA: readonly ["name", "apartment", "residency", "email", "phone", "personalIdentityNumber", "protected"];
|
|
222
|
+
export declare const PROPOSE_IMPORT_ONLY_PERSONAL_DATA: readonly ["personalIdentityNumber", "protected"];
|
|
223
|
+
export type PluginPersonalDataCategory = (typeof PLUGIN_PERSONAL_DATA_CATEGORIES)[number];
|
|
224
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB;AAC7B;;;;;;;;;GASG;AACH,kBAAkB;AAClB;;;;;GAKG;AACH,yBAAyB;AACzB,+DAA+D;AAC/D,WAAW;AACX;;;;;;;GAOG;AACH,UAAU;AACV,gEAAgE;AAChE,eAAe;AACf;;;;;;;;;;;;;GAaG;AACH,eAAe;AACf;;;;;;GAMG;AACH,yBAAyB;AACzB;;;;;;;;;GASG;AACH,aAAa;AACb;;;;;;;;GAQG;AACH,WAAW;AACX;;;;;;;GAOG;AACH,eAAe;AACf;;;;GAIG;AACH,2BAA2B;AAC3B;;;;;;;;;GASG;AACH,YAAY;AACZ;;;;GAIG;AACH,gBAAgB;AAChB;;;;;;;;;GASG;AACH,gBAAgB;AAChB;;;;;;;;;;;GAWG;AACH,2BAA2B,CACnB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAE3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B;iCACjB,OAAO;wCACA,OAAO;0BACrB,MAAM;yBACP,MAAM;8BACD,MAAM;8BACN,OAAO;wCACG,MAAM;4BAClB,MAAM;+BACH,MAAM;0BACX,MAAM;8BACF,MAAM;0CACM,MAAM;2BACrB,MAAM;+BACF,MAAM;0CAIK,MAAM;CAC0B,CAAC;AAEhE,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,EAAE,SAAS,gBAAgB,EAGjE,CAAC;AAEJ,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAIrE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,+BAA+B,iMAoCM,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,4BAA4B,sGAQiB,CAAC;AAE3D,eAAO,MAAM,iCAAiC,kDAGY,CAAC;AAE3D,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a plugin may ask the host for.
|
|
3
|
+
*
|
|
4
|
+
* The list is deliberately short and read-only. A backend plugin runs at full
|
|
5
|
+
* process privilege (ADR 0003 - there is no sandbox in v1), so these
|
|
6
|
+
* permissions are not a security boundary against hostile code; they are the
|
|
7
|
+
* declaration the board consents to before an install, and the boundary the
|
|
8
|
+
* SDK enforces against an honest plugin reaching further than it said it
|
|
9
|
+
* would. Curation of the catalog is what stands between an instance and
|
|
10
|
+
* hostile code, and the revisit trigger in ADR 0003 records when that changes.
|
|
11
|
+
*
|
|
12
|
+
* No permission grants write access to the register in v0. A plugin that
|
|
13
|
+
* needs to change resident data is a core feature request, not a plugin.
|
|
14
|
+
*
|
|
15
|
+
* A new value here is a new member of the catalog's permission list, and an
|
|
16
|
+
* instance that does not know it refuses the whole catalog index that carries
|
|
17
|
+
* it. The catalog therefore lists an entry asking for one of the content
|
|
18
|
+
* permissions below only in an index that older instances do not read: the
|
|
19
|
+
* version 2 index (ADR 0032).
|
|
20
|
+
*/
|
|
21
|
+
export const PLUGIN_PERMISSIONS = [
|
|
22
|
+
/**
|
|
23
|
+
* Apartments, names, who is a resident, who is a member, and when a person
|
|
24
|
+
* moved in or out. Never contact details, never personal identity numbers,
|
|
25
|
+
* and never a person flagged with protected personal data - those are
|
|
26
|
+
* excluded from every plugin read regardless of permission (plan section
|
|
27
|
+
* 4.4).
|
|
28
|
+
*
|
|
29
|
+
* Board positions are not in it. Who sits on the board is a core capability,
|
|
30
|
+
* read nowhere in the host object a plugin is given.
|
|
31
|
+
*/
|
|
32
|
+
"addressBook:read",
|
|
33
|
+
/**
|
|
34
|
+
* Additionally email and phone. Separate from addressBook:read because
|
|
35
|
+
* contact data is board-only in the core product, so a plugin asking for it
|
|
36
|
+
* is asking for markedly more than one that only needs to know who lives
|
|
37
|
+
* where.
|
|
38
|
+
*/
|
|
39
|
+
"addressBook:readContact",
|
|
40
|
+
/** Send mail through the instance's configured SMTP server. */
|
|
41
|
+
"mail:send",
|
|
42
|
+
/**
|
|
43
|
+
* Send text messages through the instance's configured SMS provider.
|
|
44
|
+
*
|
|
45
|
+
* Separate from mail:send because the two do not cost the association the
|
|
46
|
+
* same thing. Mail leaves through a server the instance is already set up
|
|
47
|
+
* for; a text message is billed per message against a provider contract the
|
|
48
|
+
* board signed, and an instance that has bought none cannot send one at all.
|
|
49
|
+
*/
|
|
50
|
+
"sms:send",
|
|
51
|
+
/** Register background workers and enqueue or schedule jobs. */
|
|
52
|
+
"jobs:schedule",
|
|
53
|
+
/**
|
|
54
|
+
* The fee notification runs and their notices, and the charges to members,
|
|
55
|
+
* as the board's own documents state them, and the events that say one was
|
|
56
|
+
* issued, recorded, corrected or removed.
|
|
57
|
+
*
|
|
58
|
+
* Masked as the files the board hands over are, and further: the names on a
|
|
59
|
+
* notice whose household holds a person with protected personal data are
|
|
60
|
+
* withheld, as on the fee notice file, and a charge on such a person withholds
|
|
61
|
+
* who and where entirely, where the debiting list withholds only where. A
|
|
62
|
+
* plugin is further from the board than the economic manager is, and the
|
|
63
|
+
* address book's rule that a protected person never reaches a plugin holds
|
|
64
|
+
* here too. A personal identity number is never returned, and there is no
|
|
65
|
+
* payment state to return: core records none.
|
|
66
|
+
*/
|
|
67
|
+
"finances:read",
|
|
68
|
+
/**
|
|
69
|
+
* Record that a fee notice or a charge was delivered: by which route, when,
|
|
70
|
+
* and under which reference the receiving system knows it. A receipt and
|
|
71
|
+
* never a paid flag. Separate from finances:read because it writes, and the
|
|
72
|
+
* board consents to a plugin that only reads the books knowing that it cannot
|
|
73
|
+
* add anything to them.
|
|
74
|
+
*/
|
|
75
|
+
"finances:recordDelivery",
|
|
76
|
+
/**
|
|
77
|
+
* Add blocks to the association's website.
|
|
78
|
+
*
|
|
79
|
+
* What such a block renders is published to anybody who reads the page,
|
|
80
|
+
* account or not, which is why it is a permission the board consents to
|
|
81
|
+
* rather than something a manifest may simply declare. The host prints what
|
|
82
|
+
* the block renders through an allowlist of elements, so it is never a
|
|
83
|
+
* script, a stylesheet or a resource from another host - but the words in it
|
|
84
|
+
* are the plugin's to choose.
|
|
85
|
+
*/
|
|
86
|
+
"site:blocks",
|
|
87
|
+
/**
|
|
88
|
+
* The association's published news items: the title, the body's text, when
|
|
89
|
+
* each was published and whether it is for the members or for anyone.
|
|
90
|
+
*
|
|
91
|
+
* Not a register permission. It reads what the board has already
|
|
92
|
+
* published, and never who wrote an item, a comment on it or who read it
|
|
93
|
+
* (ADR 0032). The text is the board's and may name somebody, which is why a
|
|
94
|
+
* plugin holding it declares `freeText`.
|
|
95
|
+
*/
|
|
96
|
+
"news:read",
|
|
97
|
+
/**
|
|
98
|
+
* The published events and their occurrences, and the notice of every
|
|
99
|
+
* general meeting that has been called and not yet held.
|
|
100
|
+
*
|
|
101
|
+
* Never a sign-up, a roll-call, an attendance or a proxy: how many places
|
|
102
|
+
* are left at an occurrence is the most it says about who is coming. Like
|
|
103
|
+
* news:read, it reads the board's text and declares `freeText`.
|
|
104
|
+
*/
|
|
105
|
+
"calendar:read",
|
|
106
|
+
/**
|
|
107
|
+
* The bookable resources the house offers, and when each is taken. Never by
|
|
108
|
+
* whom: no booker, no apartment, no booking's identifier, and two bookings
|
|
109
|
+
* that touch are one interval (ADR 0032).
|
|
110
|
+
*/
|
|
111
|
+
"bookings:readAvailability",
|
|
112
|
+
/**
|
|
113
|
+
* A stored picture, by its id: one held for anyone or for the members, whose
|
|
114
|
+
* upload declared that it shows no identifiable person (ADR 0032).
|
|
115
|
+
*
|
|
116
|
+
* Never a document, never a household's or the board's file, and never a
|
|
117
|
+
* picture of people: a photograph of a person needs a publication consent,
|
|
118
|
+
* and the consent the core records is for the website, not for wherever a
|
|
119
|
+
* plugin puts the picture. A picture is still a photograph, which is why a
|
|
120
|
+
* plugin holding it declares `photograph`.
|
|
121
|
+
*/
|
|
122
|
+
"media:read",
|
|
123
|
+
/**
|
|
124
|
+
* The association's addresses: the street and number of each entrance, and
|
|
125
|
+
* nothing about who lives at them. Not addressBook:read, which reads the
|
|
126
|
+
* apartments and the people in them.
|
|
127
|
+
*/
|
|
128
|
+
"addresses:read",
|
|
129
|
+
/**
|
|
130
|
+
* Install and update themes on the instance (ADR 0046).
|
|
131
|
+
*
|
|
132
|
+
* A theme is data and passes the same install lint however it arrives, so
|
|
133
|
+
* this grants no way past the theme gate: what a board consents to is a
|
|
134
|
+
* plugin putting themes on the instance's theme screen, for an
|
|
135
|
+
* administrator to preview and activate there. Each install is made for a
|
|
136
|
+
* person in the web interface who may install themes, never by the plugin on
|
|
137
|
+
* its own.
|
|
138
|
+
*/
|
|
139
|
+
"themes:install",
|
|
140
|
+
/**
|
|
141
|
+
* Hand a member list to the core for the board to review (ADR 0043).
|
|
142
|
+
*
|
|
143
|
+
* The one way a plugin brings data towards the register, and it writes
|
|
144
|
+
* nothing: the core holds the file as an import proposal on its own import
|
|
145
|
+
* screen, and a board member previews, decides and applies it there, or
|
|
146
|
+
* rejects it. It grants no read of the register and raises no route's
|
|
147
|
+
* capability floor, so the plugin learns nothing about what the file would
|
|
148
|
+
* do. It does hold the file, though, which can carry every personal identity
|
|
149
|
+
* number in the cooperative and rows about persons with protected personal
|
|
150
|
+
* data, so a manifest declaring it declares those categories too.
|
|
151
|
+
*/
|
|
152
|
+
"addressBook:proposeImport",
|
|
153
|
+
];
|
|
154
|
+
export function isPluginPermission(value) {
|
|
155
|
+
return PLUGIN_PERMISSIONS.includes(value);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Whether a permission lets a plugin read the register, or the finances that
|
|
159
|
+
* carry the names of the people in it.
|
|
160
|
+
*
|
|
161
|
+
* Every permission is classified, and the record is typed against
|
|
162
|
+
* `PluginPermission`, so a permission added to the list above fails to compile
|
|
163
|
+
* until somebody has said which it is. That is the point of a classification
|
|
164
|
+
* over a list of the refused: the rules that keep a plugin with a device route
|
|
165
|
+
* or a website block away from the register (ADR 0006, ADR 0031) hold a new
|
|
166
|
+
* permission that reads it out unless somebody remembers to add it to each.
|
|
167
|
+
* `finances:recordDelivery` writes a receipt and returns no one's details, so
|
|
168
|
+
* it is not a read. The content permissions (`news:read`, `calendar:read`,
|
|
169
|
+
* `bookings:readAvailability`, `media:read`, `addresses:read`) read what the
|
|
170
|
+
* website publishes, never the register, so a plugin with a device route may
|
|
171
|
+
* hold them; the host withholds text that names a resident from such a plugin.
|
|
172
|
+
*/
|
|
173
|
+
export const PERMISSION_REGISTER_ACCESS = {
|
|
174
|
+
"addressBook:read": "reads",
|
|
175
|
+
"addressBook:readContact": "reads",
|
|
176
|
+
"mail:send": "none",
|
|
177
|
+
"sms:send": "none",
|
|
178
|
+
"jobs:schedule": "none",
|
|
179
|
+
"finances:read": "reads",
|
|
180
|
+
"finances:recordDelivery": "none",
|
|
181
|
+
"site:blocks": "none",
|
|
182
|
+
"themes:install": "none",
|
|
183
|
+
"news:read": "none",
|
|
184
|
+
"calendar:read": "none",
|
|
185
|
+
"bookings:readAvailability": "none",
|
|
186
|
+
"media:read": "none",
|
|
187
|
+
"addresses:read": "none",
|
|
188
|
+
// Reads nothing from the register, but holds the member list it proposes.
|
|
189
|
+
// The rules that keep a device route or a website block away from it name
|
|
190
|
+
// this permission alongside `readsRegister` (ADR 0043).
|
|
191
|
+
"addressBook:proposeImport": "none",
|
|
192
|
+
};
|
|
193
|
+
/** The permissions that read the register, in the order of the list above. */
|
|
194
|
+
export const REGISTER_READING_PERMISSIONS = PLUGIN_PERMISSIONS.filter((permission) => PERMISSION_REGISTER_ACCESS[permission] === "reads");
|
|
195
|
+
/** Whether any of the permissions a manifest asks for reads the register. */
|
|
196
|
+
export function readsRegister(permissions) {
|
|
197
|
+
return permissions.some((permission) => REGISTER_READING_PERMISSIONS.includes(permission));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Categories of personal data a plugin declares it will process.
|
|
201
|
+
*
|
|
202
|
+
* Shown on the consent screen before an install, and stored with the
|
|
203
|
+
* installation as the snapshot the board agreed to. Installing the plugin
|
|
204
|
+
* writes them into the association's record of processing activities (GDPR
|
|
205
|
+
* art. 30) as the categories that processing touches. It is a declaration, not
|
|
206
|
+
* an enforcement point: what the plugin can actually reach follows from its
|
|
207
|
+
* permissions above and from the actions it is allowed to call.
|
|
208
|
+
*
|
|
209
|
+
* Not only the register. A plugin that dispatches core actions handles
|
|
210
|
+
* whatever those actions return: an assistant passing issue reports and
|
|
211
|
+
* minutes to a model provider handles free text, and one reading charges
|
|
212
|
+
* handles financial data. So the list is ACTION_PERSONAL_DATA, in its order.
|
|
213
|
+
*
|
|
214
|
+
* Two of them only one kind of plugin may declare. A personal identity number
|
|
215
|
+
* is never returned to a plugin, and a person with protected personal data
|
|
216
|
+
* (skyddade personuppgifter) never appears in one's reads at all, so for any
|
|
217
|
+
* other plugin a declaration naming either would describe something that
|
|
218
|
+
* cannot happen. A plugin that proposes an import carries the member list the
|
|
219
|
+
* other way, and that list can hold both (ADR 0043): the manifest refuses
|
|
220
|
+
* either category without `addressBook:proposeImport`, and requires both with
|
|
221
|
+
* it.
|
|
222
|
+
*/
|
|
223
|
+
export const PLUGIN_PERSONAL_DATA_CATEGORIES = [
|
|
224
|
+
/** Given and family name. */
|
|
225
|
+
"name",
|
|
226
|
+
/** Which apartment and address a person is connected to. */
|
|
227
|
+
"apartment",
|
|
228
|
+
/** Move-in and move-out dates, and whether the person is a member. */
|
|
229
|
+
"residency",
|
|
230
|
+
"email",
|
|
231
|
+
"phone",
|
|
232
|
+
/** A postal address of the person's own, not the apartment's. */
|
|
233
|
+
"postalAddress",
|
|
234
|
+
/**
|
|
235
|
+
* Personal identity number (personnummer). Only with
|
|
236
|
+
* `addressBook:proposeImport`.
|
|
237
|
+
*/
|
|
238
|
+
"personalIdentityNumber",
|
|
239
|
+
/** Sign-in credentials and sessions. */
|
|
240
|
+
"account",
|
|
241
|
+
/** Charges, debiting basis and what a person owes or has paid. */
|
|
242
|
+
"financial",
|
|
243
|
+
/**
|
|
244
|
+
* Health, an art. 9 special category. Declared by a plugin that handles text
|
|
245
|
+
* people wrote themselves, where it may be volunteered.
|
|
246
|
+
*/
|
|
247
|
+
"health",
|
|
248
|
+
/** A photograph, whether or not anybody is recognisable in it. */
|
|
249
|
+
"photograph",
|
|
250
|
+
/** Text a person wrote themselves, which may name anybody. */
|
|
251
|
+
"freeText",
|
|
252
|
+
/** The audit log's record of who did what to whose data. */
|
|
253
|
+
"auditTrail",
|
|
254
|
+
/**
|
|
255
|
+
* Rows about a person with protected personal data (skyddade
|
|
256
|
+
* personuppgifter). Only with `addressBook:proposeImport`.
|
|
257
|
+
*/
|
|
258
|
+
"protected",
|
|
259
|
+
];
|
|
260
|
+
/**
|
|
261
|
+
* The personal data categories a plugin that proposes an import must declare,
|
|
262
|
+
* and the two no other plugin may.
|
|
263
|
+
*/
|
|
264
|
+
export const PROPOSE_IMPORT_PERSONAL_DATA = [
|
|
265
|
+
"name",
|
|
266
|
+
"apartment",
|
|
267
|
+
"residency",
|
|
268
|
+
"email",
|
|
269
|
+
"phone",
|
|
270
|
+
"personalIdentityNumber",
|
|
271
|
+
"protected",
|
|
272
|
+
];
|
|
273
|
+
export const PROPOSE_IMPORT_ONLY_PERSONAL_DATA = [
|
|
274
|
+
"personalIdentityNumber",
|
|
275
|
+
"protected",
|
|
276
|
+
];
|
|
277
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC;;;;;;;;;OASG;IACH,kBAAkB;IAClB;;;;;OAKG;IACH,yBAAyB;IACzB,+DAA+D;IAC/D,WAAW;IACX;;;;;;;OAOG;IACH,UAAU;IACV,gEAAgE;IAChE,eAAe;IACf;;;;;;;;;;;;;OAaG;IACH,eAAe;IACf;;;;;;OAMG;IACH,yBAAyB;IACzB;;;;;;;;;OASG;IACH,aAAa;IACb;;;;;;;;OAQG;IACH,WAAW;IACX;;;;;;;OAOG;IACH,eAAe;IACf;;;;OAIG;IACH,2BAA2B;IAC3B;;;;;;;;;OASG;IACH,YAAY;IACZ;;;;OAIG;IACH,gBAAgB;IAChB;;;;;;;;;OASG;IACH,gBAAgB;IAChB;;;;;;;;;;;OAWG;IACH,2BAA2B;CACnB,CAAC;AAIX,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,kBAAkB,EAAE,OAAO;IAC3B,yBAAyB,EAAE,OAAO;IAClC,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,OAAO;IACxB,yBAAyB,EAAE,MAAM;IACjC,aAAa,EAAE,MAAM;IACrB,gBAAgB,EAAE,MAAM;IACxB,WAAW,EAAE,MAAM;IACnB,eAAe,EAAE,MAAM;IACvB,2BAA2B,EAAE,MAAM;IACnC,YAAY,EAAE,MAAM;IACpB,gBAAgB,EAAE,MAAM;IACxB,0EAA0E;IAC1E,0EAA0E;IAC1E,wDAAwD;IACxD,2BAA2B,EAAE,MAAM;CAC0B,CAAC;AAEhE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GACvC,kBAAkB,CAAC,MAAM,CACvB,CAAC,UAAU,EAAE,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,OAAO,CACnE,CAAC;AAEJ,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,WAA8B;IAC1D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACpC,4BAAkD,CAAC,QAAQ,CAAC,UAAU,CAAC,CACzE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,6BAA6B;IAC7B,MAAM;IACN,4DAA4D;IAC5D,WAAW;IACX,sEAAsE;IACtE,WAAW;IACX,OAAO;IACP,OAAO;IACP,iEAAiE;IACjE,eAAe;IACf;;;OAGG;IACH,wBAAwB;IACxB,wCAAwC;IACxC,SAAS;IACT,kEAAkE;IAClE,WAAW;IACX;;;OAGG;IACH,QAAQ;IACR,kEAAkE;IAClE,YAAY;IACZ,8DAA8D;IAC9D,UAAU;IACV,4DAA4D;IAC5D,YAAY;IACZ;;;OAGG;IACH,WAAW;CACqC,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,MAAM;IACN,WAAW;IACX,WAAW;IACX,OAAO;IACP,OAAO;IACP,wBAAwB;IACxB,WAAW;CAC6C,CAAC;AAE3D,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,wBAAwB;IACxB,WAAW;CAC6C,CAAC"}
|