masks 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +50 -0
  4. data/Rakefile +11 -0
  5. data/app/assets/builds/application.css +4764 -0
  6. data/app/assets/builds/application.js +8236 -0
  7. data/app/assets/builds/application.js.map +7 -0
  8. data/app/assets/builds/masks/application.css +1 -0
  9. data/app/assets/builds/masks/application.js +7122 -0
  10. data/app/assets/builds/masks/application.js.map +7 -0
  11. data/app/assets/images/masks.png +0 -0
  12. data/app/assets/javascripts/application.js +2 -0
  13. data/app/assets/javascripts/controllers/application.js +9 -0
  14. data/app/assets/javascripts/controllers/emails_controller.js +28 -0
  15. data/app/assets/javascripts/controllers/index.js +12 -0
  16. data/app/assets/javascripts/controllers/keys_controller.js +20 -0
  17. data/app/assets/javascripts/controllers/recover_controller.js +21 -0
  18. data/app/assets/javascripts/controllers/recover_password_controller.js +21 -0
  19. data/app/assets/javascripts/controllers/session_controller.js +94 -0
  20. data/app/assets/manifest.js +2 -0
  21. data/app/assets/masks_manifest.js +2 -0
  22. data/app/assets/stylesheets/application.css +26 -0
  23. data/app/controllers/concerns/masks/controller.rb +114 -0
  24. data/app/controllers/masks/actors_controller.rb +15 -0
  25. data/app/controllers/masks/application_controller.rb +35 -0
  26. data/app/controllers/masks/backup_codes_controller.rb +34 -0
  27. data/app/controllers/masks/debug_controller.rb +9 -0
  28. data/app/controllers/masks/devices_controller.rb +20 -0
  29. data/app/controllers/masks/emails_controller.rb +60 -0
  30. data/app/controllers/masks/error_controller.rb +14 -0
  31. data/app/controllers/masks/keys_controller.rb +45 -0
  32. data/app/controllers/masks/manage/actor_controller.rb +35 -0
  33. data/app/controllers/masks/manage/actors_controller.rb +12 -0
  34. data/app/controllers/masks/manage/base_controller.rb +12 -0
  35. data/app/controllers/masks/one_time_code_controller.rb +49 -0
  36. data/app/controllers/masks/passwords_controller.rb +33 -0
  37. data/app/controllers/masks/recoveries_controller.rb +43 -0
  38. data/app/controllers/masks/sessions_controller.rb +53 -0
  39. data/app/helpers/masks/application_helper.rb +49 -0
  40. data/app/jobs/masks/application_job.rb +7 -0
  41. data/app/jobs/masks/expire_actors_job.rb +15 -0
  42. data/app/jobs/masks/expire_recoveries_job.rb +15 -0
  43. data/app/mailers/masks/actor_mailer.rb +22 -0
  44. data/app/mailers/masks/application_mailer.rb +15 -0
  45. data/app/models/concerns/masks/access.rb +162 -0
  46. data/app/models/concerns/masks/actor.rb +132 -0
  47. data/app/models/concerns/masks/adapter.rb +68 -0
  48. data/app/models/concerns/masks/role.rb +9 -0
  49. data/app/models/concerns/masks/scoped.rb +54 -0
  50. data/app/models/masks/access/actor_password.rb +20 -0
  51. data/app/models/masks/access/actor_scopes.rb +18 -0
  52. data/app/models/masks/access/actor_signup.rb +22 -0
  53. data/app/models/masks/actors/anonymous.rb +40 -0
  54. data/app/models/masks/actors/system.rb +24 -0
  55. data/app/models/masks/adapters/active_record.rb +85 -0
  56. data/app/models/masks/application_model.rb +15 -0
  57. data/app/models/masks/application_record.rb +8 -0
  58. data/app/models/masks/check.rb +192 -0
  59. data/app/models/masks/credential.rb +166 -0
  60. data/app/models/masks/credentials/backup_code.rb +30 -0
  61. data/app/models/masks/credentials/device.rb +59 -0
  62. data/app/models/masks/credentials/email.rb +48 -0
  63. data/app/models/masks/credentials/factor2.rb +71 -0
  64. data/app/models/masks/credentials/key.rb +38 -0
  65. data/app/models/masks/credentials/last_login.rb +12 -0
  66. data/app/models/masks/credentials/masquerade.rb +32 -0
  67. data/app/models/masks/credentials/nickname.rb +63 -0
  68. data/app/models/masks/credentials/one_time_code.rb +34 -0
  69. data/app/models/masks/credentials/password.rb +28 -0
  70. data/app/models/masks/credentials/recovery.rb +71 -0
  71. data/app/models/masks/credentials/session.rb +67 -0
  72. data/app/models/masks/device.rb +30 -0
  73. data/app/models/masks/error.rb +51 -0
  74. data/app/models/masks/event.rb +14 -0
  75. data/app/models/masks/mask.rb +255 -0
  76. data/app/models/masks/rails/actor.rb +190 -0
  77. data/app/models/masks/rails/actor_role.rb +12 -0
  78. data/app/models/masks/rails/device.rb +47 -0
  79. data/app/models/masks/rails/email.rb +96 -0
  80. data/app/models/masks/rails/key.rb +61 -0
  81. data/app/models/masks/rails/recovery.rb +116 -0
  82. data/app/models/masks/rails/role.rb +20 -0
  83. data/app/models/masks/rails/scope.rb +15 -0
  84. data/app/models/masks/session.rb +447 -0
  85. data/app/models/masks/sessions/access.rb +26 -0
  86. data/app/models/masks/sessions/inline.rb +16 -0
  87. data/app/models/masks/sessions/request.rb +42 -0
  88. data/app/resources/masks/actor_resource.rb +9 -0
  89. data/app/resources/masks/session_resource.rb +15 -0
  90. data/app/views/layouts/masks/application.html.erb +17 -0
  91. data/app/views/layouts/masks/mailer.html.erb +17 -0
  92. data/app/views/layouts/masks/mailer.text.erb +1 -0
  93. data/app/views/layouts/masks/manage.html.erb +25 -0
  94. data/app/views/masks/actor_mailer/recover_credentials.html.erb +33 -0
  95. data/app/views/masks/actor_mailer/recover_credentials.text.erb +1 -0
  96. data/app/views/masks/actor_mailer/verify_email.html.erb +34 -0
  97. data/app/views/masks/actor_mailer/verify_email.text.erb +8 -0
  98. data/app/views/masks/actors/current.html.erb +152 -0
  99. data/app/views/masks/application/_header.html.erb +31 -0
  100. data/app/views/masks/backup_codes/new.html.erb +103 -0
  101. data/app/views/masks/emails/new.html.erb +103 -0
  102. data/app/views/masks/emails/verify.html.erb +51 -0
  103. data/app/views/masks/keys/new.html.erb +127 -0
  104. data/app/views/masks/manage/actor/show.html.erb +126 -0
  105. data/app/views/masks/manage/actors/index.html.erb +40 -0
  106. data/app/views/masks/one_time_code/new.html.erb +150 -0
  107. data/app/views/masks/passwords/edit.html.erb +58 -0
  108. data/app/views/masks/recoveries/new.html.erb +71 -0
  109. data/app/views/masks/recoveries/password.html.erb +64 -0
  110. data/app/views/masks/sessions/new.html.erb +153 -0
  111. data/config/brakeman.ignore +28 -0
  112. data/config/locales/en.yml +286 -0
  113. data/config/routes.rb +46 -0
  114. data/db/migrate/20231205173845_create_actors.rb +94 -0
  115. data/lib/generators/masks/install/USAGE +8 -0
  116. data/lib/generators/masks/install/install_generator.rb +33 -0
  117. data/lib/generators/masks/install/templates/initializer.rb +5 -0
  118. data/lib/generators/masks/install/templates/masks.json +6 -0
  119. data/lib/masks/configuration.rb +236 -0
  120. data/lib/masks/engine.rb +25 -0
  121. data/lib/masks/middleware.rb +70 -0
  122. data/lib/masks/version.rb +5 -0
  123. data/lib/masks.rb +183 -0
  124. data/lib/tasks/masks_tasks.rake +71 -0
  125. data/masks.json +274 -0
  126. metadata +416 -0
data/masks.json ADDED
@@ -0,0 +1,274 @@
1
+ {
2
+ "name": "masks",
3
+ "url": "http://localhost:3000",
4
+ "title": "masks",
5
+ "signups": true,
6
+ "nickname": {
7
+ "format": "^[\\w]+$",
8
+ "length": { "min": 5, "max": 36 }
9
+ },
10
+ "password": {
11
+ "length": { "min": 8, "max": 128 }
12
+ },
13
+ "masks": [
14
+ {
15
+ "skip": true,
16
+ "request": {
17
+ "method": "get",
18
+ "path": ["/assets/*", "/debug"]
19
+ }
20
+ },
21
+ {
22
+ "type": "anon",
23
+ "request": {
24
+ "method": "get",
25
+ "path": "/anon"
26
+ },
27
+ "anon": true,
28
+ "fail": false
29
+ },
30
+ {
31
+ "type": "api",
32
+ "request": {
33
+ "path": ["*"],
34
+ "header": "Authorization"
35
+ }
36
+ },
37
+ {
38
+ "type": "authenticate",
39
+ "request": {
40
+ "method": "post",
41
+ "path": "/session"
42
+ },
43
+ "fail": false
44
+ },
45
+ {
46
+ "type": "session",
47
+ "request": {
48
+ "method": ["get", "delete"],
49
+ "path": "/session"
50
+ },
51
+ "fail": false
52
+ },
53
+ {
54
+ "type": "recovery",
55
+ "request": {
56
+ "method": ["get", "post"],
57
+ "path": ["/recovery", "/recover"]
58
+ },
59
+ "fail": false
60
+ },
61
+ {
62
+ "type": "sudo",
63
+ "request": {
64
+ "method": ["post"],
65
+ "path": "/emails"
66
+ },
67
+ "fail": false
68
+ },
69
+ {
70
+ "type": "session",
71
+ "request": {
72
+ "method": ["delete", "patch"],
73
+ "path": "/emails"
74
+ },
75
+ "fail": false
76
+ },
77
+ {
78
+ "type": "session",
79
+ "request": {
80
+ "method": "get",
81
+ "path": "/email/*/verify"
82
+ },
83
+ "fail": false
84
+ },
85
+ {
86
+ "type": "sudo",
87
+ "request": {
88
+ "method": ["post", "delete"],
89
+ "path": "/one-time-codes"
90
+ },
91
+ "fail": false
92
+ },
93
+ {
94
+ "type": "sudo",
95
+ "request": {
96
+ "method": ["post"],
97
+ "path": "/backup-codes"
98
+ },
99
+ "fail": false
100
+ },
101
+ {
102
+ "type": "session",
103
+ "access": ["actor.password"],
104
+ "request": {
105
+ "method": ["get"],
106
+ "path": "/password"
107
+ }
108
+ },
109
+ {
110
+ "type": "sudo",
111
+ "access": ["actor.password"],
112
+ "request": {
113
+ "method": ["post"],
114
+ "path": "/password"
115
+ },
116
+ "fail": false
117
+ },
118
+ {
119
+ "type": "session",
120
+ "request": {
121
+ "path": "/cable",
122
+ "method": "get"
123
+ }
124
+ },
125
+ {
126
+ "type": "session",
127
+ "request": {
128
+ "path": "/private"
129
+ }
130
+ },
131
+ {
132
+ "type": "sudo",
133
+ "request": {
134
+ "method": "patch",
135
+ "path": "/actor"
136
+ }
137
+ },
138
+ {
139
+ "type": "sudo",
140
+ "request": {
141
+ "method": "post",
142
+ "path": "/session",
143
+ "param": "sudo"
144
+ }
145
+ },
146
+ {
147
+ "type": "manage",
148
+ "request": {
149
+ "path": ["/actors", "/actors/*"]
150
+ },
151
+ "fail": false
152
+ },
153
+ {
154
+ "type": "session",
155
+ "request": {
156
+ "path": "*"
157
+ },
158
+ "fail": "/session"
159
+ },
160
+ {
161
+ "name": "cli",
162
+ "type": "masquerade",
163
+ "access": ["actor.signup", "actor.password", "actor.scopes"]
164
+ },
165
+ {
166
+ "access": "actor.signup"
167
+ },
168
+ {
169
+ "access": "actor.password"
170
+ }
171
+ ],
172
+ "types": {
173
+ "anon": {
174
+ "checks": null,
175
+ "credentials": null
176
+ },
177
+ "public": {
178
+ "checks": {
179
+ "actor": {
180
+ "lifetime": "P1M",
181
+ "optional": true
182
+ }
183
+ },
184
+ "credentials": ["Session"]
185
+ },
186
+ "authenticate": {
187
+ "checks": {
188
+ "actor": {
189
+ "lifetime": "PT12H"
190
+ },
191
+ "password": {
192
+ "lifetime": "PT12H"
193
+ },
194
+ "factor2": {
195
+ "lifetime": "PT12H",
196
+ "optional": true
197
+ },
198
+ "device": {}
199
+ },
200
+ "credentials": [
201
+ "Email",
202
+ "Nickname",
203
+ "Session",
204
+ "Password",
205
+ "BackupCode",
206
+ "OneTimeCode",
207
+ "LastLogin",
208
+ "Device"
209
+ ]
210
+ },
211
+ "sudo": {
212
+ "checks": {
213
+ "actor": {
214
+ "lifetime": "PT12H"
215
+ },
216
+ "password": {},
217
+ "device": {}
218
+ },
219
+ "credentials": ["Session", "Password", "Device"]
220
+ },
221
+ "session": {
222
+ "checks": {
223
+ "actor": {
224
+ "lifetime": "PT12H"
225
+ },
226
+ "password": {
227
+ "lifetime": "PT12H"
228
+ },
229
+ "factor2": {
230
+ "lifetime": "PT12H",
231
+ "optional": true
232
+ },
233
+ "device": {}
234
+ },
235
+ "credentials": ["Session", "Device"]
236
+ },
237
+ "manage": {
238
+ "checks": {
239
+ "actor": {
240
+ "lifetime": "PT12H"
241
+ },
242
+ "password": {
243
+ "lifetime": "PT12H"
244
+ },
245
+ "factor2": {
246
+ "lifetime": "PT12H",
247
+ "optional": true
248
+ },
249
+ "device": {}
250
+ },
251
+ "credentials": ["Session", "Device"],
252
+ "scopes": "masks:manager"
253
+ },
254
+ "recovery": {
255
+ "checks": {
256
+ "recovery": {}
257
+ },
258
+ "credentials": ["Session", "Recovery", "Device"]
259
+ },
260
+ "api": {
261
+ "checks": {
262
+ "key": {},
263
+ "device": {}
264
+ },
265
+ "credentials": ["Key", "Device"]
266
+ },
267
+ "masquerade": {
268
+ "checks": {
269
+ "actor": {}
270
+ },
271
+ "credentials": ["Masquerade"]
272
+ }
273
+ }
274
+ }
metadata ADDED
@@ -0,0 +1,416 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: masks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - geiger-to
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-02-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: alba
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bcrypt
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: cssbundling-rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: device_detector
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: fuzzyurl
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.9.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.9.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: jsbundling-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pagy
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: phonelib
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: premailer-rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rails
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 7.1.2
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 7.1.2
153
+ - !ruby/object:Gem::Dependency
154
+ name: recursive-open-struct
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rotp
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: rqrcode
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: sprockets-rails
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ - !ruby/object:Gem::Dependency
210
+ name: stimulus-rails
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '1.3'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '1.3'
223
+ - !ruby/object:Gem::Dependency
224
+ name: turbo-rails
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '1.5'
230
+ - - "<"
231
+ - !ruby/object:Gem::Version
232
+ version: '3.0'
233
+ type: :runtime
234
+ prerelease: false
235
+ version_requirements: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: '1.5'
240
+ - - "<"
241
+ - !ruby/object:Gem::Version
242
+ version: '3.0'
243
+ - !ruby/object:Gem::Dependency
244
+ name: valid_email
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">="
248
+ - !ruby/object:Gem::Version
249
+ version: '0'
250
+ type: :runtime
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ description: masks is a ruby library and rails engine that adds simple, extensible
258
+ auth to most applications.
259
+ email:
260
+ - git@geiger.to
261
+ executables: []
262
+ extensions: []
263
+ extra_rdoc_files: []
264
+ files:
265
+ - MIT-LICENSE
266
+ - README.md
267
+ - Rakefile
268
+ - app/assets/builds/application.css
269
+ - app/assets/builds/application.js
270
+ - app/assets/builds/application.js.map
271
+ - app/assets/builds/masks/application.css
272
+ - app/assets/builds/masks/application.js
273
+ - app/assets/builds/masks/application.js.map
274
+ - app/assets/images/masks.png
275
+ - app/assets/javascripts/application.js
276
+ - app/assets/javascripts/controllers/application.js
277
+ - app/assets/javascripts/controllers/emails_controller.js
278
+ - app/assets/javascripts/controllers/index.js
279
+ - app/assets/javascripts/controllers/keys_controller.js
280
+ - app/assets/javascripts/controllers/recover_controller.js
281
+ - app/assets/javascripts/controllers/recover_password_controller.js
282
+ - app/assets/javascripts/controllers/session_controller.js
283
+ - app/assets/manifest.js
284
+ - app/assets/masks_manifest.js
285
+ - app/assets/stylesheets/application.css
286
+ - app/controllers/concerns/masks/controller.rb
287
+ - app/controllers/masks/actors_controller.rb
288
+ - app/controllers/masks/application_controller.rb
289
+ - app/controllers/masks/backup_codes_controller.rb
290
+ - app/controllers/masks/debug_controller.rb
291
+ - app/controllers/masks/devices_controller.rb
292
+ - app/controllers/masks/emails_controller.rb
293
+ - app/controllers/masks/error_controller.rb
294
+ - app/controllers/masks/keys_controller.rb
295
+ - app/controllers/masks/manage/actor_controller.rb
296
+ - app/controllers/masks/manage/actors_controller.rb
297
+ - app/controllers/masks/manage/base_controller.rb
298
+ - app/controllers/masks/one_time_code_controller.rb
299
+ - app/controllers/masks/passwords_controller.rb
300
+ - app/controllers/masks/recoveries_controller.rb
301
+ - app/controllers/masks/sessions_controller.rb
302
+ - app/helpers/masks/application_helper.rb
303
+ - app/jobs/masks/application_job.rb
304
+ - app/jobs/masks/expire_actors_job.rb
305
+ - app/jobs/masks/expire_recoveries_job.rb
306
+ - app/mailers/masks/actor_mailer.rb
307
+ - app/mailers/masks/application_mailer.rb
308
+ - app/models/concerns/masks/access.rb
309
+ - app/models/concerns/masks/actor.rb
310
+ - app/models/concerns/masks/adapter.rb
311
+ - app/models/concerns/masks/role.rb
312
+ - app/models/concerns/masks/scoped.rb
313
+ - app/models/masks/access/actor_password.rb
314
+ - app/models/masks/access/actor_scopes.rb
315
+ - app/models/masks/access/actor_signup.rb
316
+ - app/models/masks/actors/anonymous.rb
317
+ - app/models/masks/actors/system.rb
318
+ - app/models/masks/adapters/active_record.rb
319
+ - app/models/masks/application_model.rb
320
+ - app/models/masks/application_record.rb
321
+ - app/models/masks/check.rb
322
+ - app/models/masks/credential.rb
323
+ - app/models/masks/credentials/backup_code.rb
324
+ - app/models/masks/credentials/device.rb
325
+ - app/models/masks/credentials/email.rb
326
+ - app/models/masks/credentials/factor2.rb
327
+ - app/models/masks/credentials/key.rb
328
+ - app/models/masks/credentials/last_login.rb
329
+ - app/models/masks/credentials/masquerade.rb
330
+ - app/models/masks/credentials/nickname.rb
331
+ - app/models/masks/credentials/one_time_code.rb
332
+ - app/models/masks/credentials/password.rb
333
+ - app/models/masks/credentials/recovery.rb
334
+ - app/models/masks/credentials/session.rb
335
+ - app/models/masks/device.rb
336
+ - app/models/masks/error.rb
337
+ - app/models/masks/event.rb
338
+ - app/models/masks/mask.rb
339
+ - app/models/masks/rails/actor.rb
340
+ - app/models/masks/rails/actor_role.rb
341
+ - app/models/masks/rails/device.rb
342
+ - app/models/masks/rails/email.rb
343
+ - app/models/masks/rails/key.rb
344
+ - app/models/masks/rails/recovery.rb
345
+ - app/models/masks/rails/role.rb
346
+ - app/models/masks/rails/scope.rb
347
+ - app/models/masks/session.rb
348
+ - app/models/masks/sessions/access.rb
349
+ - app/models/masks/sessions/inline.rb
350
+ - app/models/masks/sessions/request.rb
351
+ - app/resources/masks/actor_resource.rb
352
+ - app/resources/masks/session_resource.rb
353
+ - app/views/layouts/masks/application.html.erb
354
+ - app/views/layouts/masks/mailer.html.erb
355
+ - app/views/layouts/masks/mailer.text.erb
356
+ - app/views/layouts/masks/manage.html.erb
357
+ - app/views/masks/actor_mailer/recover_credentials.html.erb
358
+ - app/views/masks/actor_mailer/recover_credentials.text.erb
359
+ - app/views/masks/actor_mailer/verify_email.html.erb
360
+ - app/views/masks/actor_mailer/verify_email.text.erb
361
+ - app/views/masks/actors/current.html.erb
362
+ - app/views/masks/application/_header.html.erb
363
+ - app/views/masks/backup_codes/new.html.erb
364
+ - app/views/masks/emails/new.html.erb
365
+ - app/views/masks/emails/verify.html.erb
366
+ - app/views/masks/keys/new.html.erb
367
+ - app/views/masks/manage/actor/show.html.erb
368
+ - app/views/masks/manage/actors/index.html.erb
369
+ - app/views/masks/one_time_code/new.html.erb
370
+ - app/views/masks/passwords/edit.html.erb
371
+ - app/views/masks/recoveries/new.html.erb
372
+ - app/views/masks/recoveries/password.html.erb
373
+ - app/views/masks/sessions/new.html.erb
374
+ - config/brakeman.ignore
375
+ - config/locales/en.yml
376
+ - config/routes.rb
377
+ - db/migrate/20231205173845_create_actors.rb
378
+ - lib/generators/masks/install/USAGE
379
+ - lib/generators/masks/install/install_generator.rb
380
+ - lib/generators/masks/install/templates/initializer.rb
381
+ - lib/generators/masks/install/templates/masks.json
382
+ - lib/masks.rb
383
+ - lib/masks/configuration.rb
384
+ - lib/masks/engine.rb
385
+ - lib/masks/middleware.rb
386
+ - lib/masks/version.rb
387
+ - lib/tasks/masks_tasks.rake
388
+ - masks.json
389
+ homepage: https://masks.geiger.to
390
+ licenses:
391
+ - MIT
392
+ metadata:
393
+ homepage_uri: https://masks.geiger.to
394
+ source_code_uri: https://github.com/geiger-to/masks
395
+ changelog_uri: https://masks.geiger.to/changelog
396
+ rubygems_mfa_required: 'true'
397
+ post_install_message:
398
+ rdoc_options: []
399
+ require_paths:
400
+ - lib
401
+ required_ruby_version: !ruby/object:Gem::Requirement
402
+ requirements:
403
+ - - "~>"
404
+ - !ruby/object:Gem::Version
405
+ version: '3.1'
406
+ required_rubygems_version: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - ">="
409
+ - !ruby/object:Gem::Version
410
+ version: '0'
411
+ requirements: []
412
+ rubygems_version: 3.5.6
413
+ signing_key:
414
+ specification_version: 4
415
+ summary: mask ruby applications with auth
416
+ test_files: []