Associate RS authorizations with web apps

This commit is contained in:
Râu Cao
2023-10-24 13:08:06 +02:00
parent 261a782963
commit fcea11f0e5
6 changed files with 36 additions and 11 deletions

View File

@@ -1,6 +1,8 @@
class AppCatalog::WebApp < ApplicationRecord
store :metadata, coder: JSON
has_many :remote_storage_authorizations
has_one_attached :icon do |attachable|
attachable.variant :medium, resize_to_limit: [128,128]
attachable.variant :large, resize_to_limit: [256,256]

View File

@@ -1,5 +1,6 @@
class RemoteStorageAuthorization < ApplicationRecord
belongs_to :user
belongs_to :web_app, class_name: "AppCatalog::WebApp", optional: true
serialize :permissions
@@ -15,7 +16,9 @@ class RemoteStorageAuthorization < ApplicationRecord
before_create :generate_token
before_create :store_token_in_redis
before_create :find_or_create_web_app
after_create :schedule_token_expiry
# after_create :notify_user
before_destroy :delete_token_from_redis
after_destroy :remove_token_expiry_job
@@ -60,4 +63,21 @@ class RemoteStorageAuthorization < ApplicationRecord
job.delete if job.display_args == [id]
end
end
def find_or_create_web_app
if looks_like_hosted_origin?
web_app = AppCatalog::WebApp.find_or_create_by!(url: self.url)
self.web_app = web_app
self.app_name = web_app.name.presence || client_id
else
self.app_name = client_id
end
end
def looks_like_hosted_origin?
uri = URI.parse self.redirect_uri
!!(uri.host =~ /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/)
rescue URI::InvalidURIError
false
end
end