Module: RubyCms::EngineAdminPermissions
- Included in:
- Engine
- Defined in:
- lib/ruby_cms/engine/admin_permissions.rb
Instance Method Summary collapse
- #extract_email_from_args(args) ⇒ Object
- #find_user_by_email(email) ⇒ Object
- #find_user_by_email_address(user_class, email) ⇒ Object
- #find_user_by_email_column(user_class, email) ⇒ Object
- #grant_admin_permissions_to_admin_users ⇒ Object
- #grant_manage_admin_permission(user, email) ⇒ Object
- #validate_email_present(email) ⇒ Object
- #validate_user_found(user, email) ⇒ Object
Instance Method Details
#extract_email_from_args(args) ⇒ Object
20 21 22 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 20 def extract_email_from_args(args) args[:email] || ENV["email"] || ENV.fetch("EMAIL", nil) end |
#find_user_by_email(email) ⇒ Object
32 33 34 35 36 37 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 32 def find_user_by_email(email) user_class = Rails.application.config.ruby_cms.user_class_name .constantize find_user_by_email_address(user_class, email) || find_user_by_email_column(user_class, email) end |
#find_user_by_email_address(user_class, email) ⇒ Object
39 40 41 42 43 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 39 def find_user_by_email_address(user_class, email) return unless user_class.column_names.include?("email_address") user_class.find_by(email_address: email) end |
#find_user_by_email_column(user_class, email) ⇒ Object
45 46 47 48 49 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 45 def find_user_by_email_column(user_class, email) return unless user_class.column_names.include?("email") user_class.find_by(email:) end |
#grant_admin_permissions_to_admin_users ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 5 def return unless defined?(::User) && User.column_names.include?("admin") = RubyCms::Permission.all_keys = RubyCms::Permission.where(key: ).index_by(&:key) User.where(admin: true).find_each do |u| .each do |key| perm = [key] next if perm.nil? RubyCms::UserPermission.find_or_create_by!(user: u, permission: perm) end end end |
#grant_manage_admin_permission(user, email) ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 58 def (user, email) RubyCms::Permission.ensure_defaults! RubyCms::Permission.all_keys.each do |key| perm = RubyCms::Permission.find_by(key:) next unless perm RubyCms::UserPermission.find_or_create_by!(user: user, permission: perm) end puts "Granted full admin permissions to #{email}" # rubocop:disable Rails/Output end |
#validate_email_present(email) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 24 def validate_email_present(email) return if email.present? warn "Usage: rails ruby_cms:grant_manage_admin " \ "email=user@example.com" raise "Email is required" end |
#validate_user_found(user, email) ⇒ Object
51 52 53 54 55 56 |
# File 'lib/ruby_cms/engine/admin_permissions.rb', line 51 def validate_user_found(user, email) return if user warn "User not found: #{email}" raise "User not found: #{email}" end |