katalyst-koi 5.8.2 → 5.9.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/koi/admin.css +1 -0
  3. data/app/assets/stylesheets/koi/blocks/clipboard.css +43 -16
  4. data/app/assets/stylesheets/koi/blocks/index.css +1 -0
  5. data/app/controllers/admin/admin_roles_controller.rb +49 -0
  6. data/app/controllers/admin/background_jobs_controller.rb +13 -2
  7. data/app/controllers/admin/device_authorizations_controller.rb +1 -1
  8. data/app/controllers/admin/recurring_tasks_controller.rb +1 -2
  9. data/app/controllers/admin/sessions/tokens_controller.rb +45 -0
  10. data/app/controllers/admin/tokens_controller.rb +25 -26
  11. data/app/controllers/concerns/koi/controller.rb +22 -0
  12. data/app/models/admin/device_authorization.rb +66 -18
  13. data/app/models/admin/role.rb +41 -0
  14. data/app/models/background_job.rb +10 -1
  15. data/app/models/koi/current.rb +10 -0
  16. data/app/models/koi/identity/assertion.rb +78 -0
  17. data/app/models/koi/identity/member.rb +30 -0
  18. data/app/models/koi/identity/principal.rb +40 -0
  19. data/app/models/koi/identity/provider.rb +151 -0
  20. data/app/models/koi/identity.rb +70 -0
  21. data/app/models/recurring_task.rb +16 -0
  22. data/app/views/admin/admin_roles/index.html.erb +14 -0
  23. data/app/views/admin/admin_roles/show.html.erb +41 -0
  24. data/app/views/admin/{tokens → sessions/tokens}/create.turbo_stream.erb +2 -2
  25. data/config/routes.rb +5 -3
  26. data/db/migrate/20260721000001_create_admin_roles.rb +12 -0
  27. data/db/migrate/20260721000002_add_admin_role_to_admin_device_authorizations.rb +25 -0
  28. data/db/migrate/20260721000003_add_principal_to_admin_device_authorizations.rb +7 -0
  29. data/lib/koi/config.rb +32 -0
  30. data/lib/koi/engine.rb +12 -0
  31. data/lib/koi/extensions/object_rendering.rb +11 -11
  32. data/lib/koi/form/builder.rb +5 -3
  33. data/lib/koi/middleware/admin_authentication.rb +2 -2
  34. data/spec/factories/admin_device_authorizations.rb +18 -0
  35. data/spec/factories/admin_roles.rb +7 -0
  36. metadata +33 -5
  37. data/app/controllers/admin/device_tokens_controller.rb +0 -18
  38. /data/app/views/admin/{tokens → sessions/tokens}/show.html.erb +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katalyst-koi
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.8.2
4
+ version: 5.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katalyst Interactive
@@ -79,6 +79,20 @@ dependencies:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: jwt
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '3.0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '3.0'
82
96
  - !ruby/object:Gem::Dependency
83
97
  name: rotp
84
98
  requirement: !ruby/object:Gem::Requirement
@@ -265,6 +279,7 @@ files:
265
279
  - app/assets/builds/katalyst/koi.js
266
280
  - app/assets/builds/katalyst/koi.min.js
267
281
  - app/assets/builds/katalyst/koi.min.js.map
282
+ - app/assets/builds/koi/admin.css
268
283
  - app/assets/config/koi.js
269
284
  - app/assets/fonts/koi/inconsolata-license.txt
270
285
  - app/assets/fonts/koi/inconsolata-v37-latin-regular.woff2
@@ -373,6 +388,7 @@ files:
373
388
  - app/components/koi/tables/cells/link_component.rb
374
389
  - app/components/koi/tables/table_component.rb
375
390
  - app/controllers/admin/active_storage/direct_uploads_controller.rb
391
+ - app/controllers/admin/admin_roles_controller.rb
376
392
  - app/controllers/admin/admin_users_controller.rb
377
393
  - app/controllers/admin/application_controller.rb
378
394
  - app/controllers/admin/background_jobs_controller.rb
@@ -380,11 +396,11 @@ files:
380
396
  - app/controllers/admin/credentials_controller.rb
381
397
  - app/controllers/admin/dashboards_controller.rb
382
398
  - app/controllers/admin/device_authorizations_controller.rb
383
- - app/controllers/admin/device_tokens_controller.rb
384
399
  - app/controllers/admin/feature_flags_controller.rb
385
400
  - app/controllers/admin/otps_controller.rb
386
401
  - app/controllers/admin/profiles_controller.rb
387
402
  - app/controllers/admin/recurring_tasks_controller.rb
403
+ - app/controllers/admin/sessions/tokens_controller.rb
388
404
  - app/controllers/admin/sessions_controller.rb
389
405
  - app/controllers/admin/tokens_controller.rb
390
406
  - app/controllers/admin/url_rewrites_controller.rb
@@ -425,6 +441,7 @@ files:
425
441
  - app/models/admin/collection.rb
426
442
  - app/models/admin/credential.rb
427
443
  - app/models/admin/device_authorization.rb
444
+ - app/models/admin/role.rb
428
445
  - app/models/admin/session.rb
429
446
  - app/models/admin/user.rb
430
447
  - app/models/application_record.rb
@@ -433,9 +450,16 @@ files:
433
450
  - app/models/concerns/koi/model/otp.rb
434
451
  - app/models/feature_flag.rb
435
452
  - app/models/koi/current.rb
453
+ - app/models/koi/identity.rb
454
+ - app/models/koi/identity/assertion.rb
455
+ - app/models/koi/identity/member.rb
456
+ - app/models/koi/identity/principal.rb
457
+ - app/models/koi/identity/provider.rb
436
458
  - app/models/recurring_task.rb
437
459
  - app/models/url_rewrite.rb
438
460
  - app/models/well_known.rb
461
+ - app/views/admin/admin_roles/index.html.erb
462
+ - app/views/admin/admin_roles/show.html.erb
439
463
  - app/views/admin/admin_users/_form.html.erb
440
464
  - app/views/admin/admin_users/archived.html.erb
441
465
  - app/views/admin/admin_users/edit.html.erb
@@ -469,12 +493,12 @@ files:
469
493
  - app/views/admin/sessions/new.html.erb
470
494
  - app/views/admin/sessions/otp.html.erb
471
495
  - app/views/admin/sessions/password.html.erb
496
+ - app/views/admin/sessions/tokens/create.turbo_stream.erb
497
+ - app/views/admin/sessions/tokens/show.html.erb
472
498
  - app/views/admin/shared/icons/_close.html.erb
473
499
  - app/views/admin/shared/icons/_cross.html.erb
474
500
  - app/views/admin/shared/icons/_menu.html.erb
475
501
  - app/views/admin/shared/icons/_refresh.html.erb
476
- - app/views/admin/tokens/create.turbo_stream.erb
477
- - app/views/admin/tokens/show.html.erb
478
502
  - app/views/admin/url_rewrites/_form.html.erb
479
503
  - app/views/admin/url_rewrites/edit.html.erb
480
504
  - app/views/admin/url_rewrites/index.html.erb
@@ -521,6 +545,9 @@ files:
521
545
  - db/migrate/20260501000000_add_last_sign_out_at_to_admin_users.rb
522
546
  - db/migrate/20260525041029_create_admin_sessions.rb
523
547
  - db/migrate/20260525111759_clean_up_admin_user_timestamps.rb
548
+ - db/migrate/20260721000001_create_admin_roles.rb
549
+ - db/migrate/20260721000002_add_admin_role_to_admin_device_authorizations.rb
550
+ - db/migrate/20260721000003_add_principal_to_admin_device_authorizations.rb
524
551
  - db/seeds.rb
525
552
  - lib/generators/koi/admin/USAGE
526
553
  - lib/generators/koi/admin/admin_generator.rb
@@ -558,6 +585,7 @@ files:
558
585
  - lib/koi/middleware/url_redirect.rb
559
586
  - lib/koi/release.rb
560
587
  - spec/factories/admin_device_authorizations.rb
588
+ - spec/factories/admin_roles.rb
561
589
  - spec/factories/admin_sessions.rb
562
590
  - spec/factories/admins.rb
563
591
  - spec/factories/url_rewrites.rb
@@ -581,7 +609,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
581
609
  - !ruby/object:Gem::Version
582
610
  version: '0'
583
611
  requirements: []
584
- rubygems_version: 4.0.10
612
+ rubygems_version: 4.0.16
585
613
  specification_version: 4
586
614
  summary: Koi CMS admin framework
587
615
  test_files: []
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Admin
4
- class DeviceTokensController < ApplicationController
5
- GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code"
6
-
7
- rate_limit to: 20, within: 1.minute, only: :create
8
- skip_before_action :verify_authenticity_token, only: :create
9
-
10
- def create
11
- return render(json: { error: "invalid_request" }, status: :bad_request) unless params[:grant_type] == GRANT_TYPE
12
-
13
- render json: Admin::DeviceAuthorization.issue_access_token!(device_code: params[:device_code])
14
- rescue Admin::DeviceAuthorization::TokenError => e
15
- render json: { error: e.code }, status: :bad_request
16
- end
17
- end
18
- end