Notify user about new RS authorizations

This commit is contained in:
Râu Cao
2023-11-20 18:22:28 +01:00
parent c2dae105ff
commit cfd0935bdc
5 changed files with 121 additions and 41 deletions

View File

@@ -5,4 +5,11 @@ class NotificationMailer < ApplicationMailer
@subject = "Sats received"
mail to: @user.email, subject: @subject
end
def remotestorage_auth_created
@user = params[:user]
@auth = params[:auth]
@subject = "New app connected to your storage"
mail to: @user.email, subject: @subject
end
end

View File

@@ -18,7 +18,7 @@ class RemoteStorageAuthorization < ApplicationRecord
before_create :store_token_in_redis
before_create :find_or_create_web_app
after_create :schedule_token_expiry
# after_create :notify_user
after_create :notify_user
before_destroy :delete_token_from_redis
after_destroy :remove_token_expiry_job
@@ -93,4 +93,22 @@ class RemoteStorageAuthorization < ApplicationRecord
rescue URI::InvalidURIError
false
end
def notify_user
notify = user.preferences[:remotestorage_notify_auth_created]
case notify
when "xmpp"
router = Router.new
payload = {
type: "normal", to: user.address,
from: Setting.xmpp_notifications_from_address,
body: "You have just granted '#{self.client_id}' access to your Kosmos Storage. Visit your Storage dashboard to check on your connected apps and revoke permissions anytime: #{router.services_storage_url}"
}
XmppSendMessageJob.perform_later(payload)
when "email"
NotificationMailer.with(user: user, auth: self)
.remotestorage_auth_created.deliver_later
end
end
end

7
app/services/router.rb Normal file
View File

@@ -0,0 +1,7 @@
class Router
include Rails.application.routes.url_helpers
def self.default_url_options
ActionMailer::Base.default_url_options
end
end

View File

@@ -0,0 +1,23 @@
Hi <%= @user.display_name.presence || @user.cn %>,
You have just granted '<%= @auth.client_id %>' access to your Kosmos Storage, with the following permissions:
<% @permissions.each do |p| %>
* <%= p %>
<% end %>
Visit your Storage dashboard to check on your connected apps and revoke permissions anytime:
<%= services_storage_url %>
Have fun!
---
You can disable email notifications for new app authorizations in your account settings:
<%= setting_path(:remotestorage) %>
<% if Setting.discourse_enabled %>
If you have any questions, please visit our community forums:
<%= Setting.discourse_public_url %>
<% end %>