mirror of
https://github.com/astuto/astuto.git
synced 2025-12-15 03:07:52 +01:00
Add power_user? method to User model
This commit is contained in:
@@ -39,7 +39,7 @@ class PostsController < ApplicationController
|
||||
def update
|
||||
post = Post.find(params[:id])
|
||||
|
||||
if current_user.role == 'user' && current_user.id != post.user_id
|
||||
if !current_user.power_user? && current_user.id != post.user_id
|
||||
render json: I18n.t('errors.unauthorized'), status: :unauthorized
|
||||
return
|
||||
end
|
||||
|
||||
@@ -18,4 +18,8 @@ class User < ApplicationRecord
|
||||
gravatar_id = Digest::MD5::hexdigest(email.downcase)
|
||||
"https://secure.gravatar.com/avatar/#{gravatar_id}"
|
||||
end
|
||||
|
||||
def power_user?
|
||||
role == 'admin' || role == 'moderator'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
postId: @post.id,
|
||||
postStatuses: @post_statuses,
|
||||
isLoggedIn: user_signed_in?,
|
||||
isPowerUser: user_signed_in? ? (current_user.role == 'admin' || current_user.role == 'moderator') : false,
|
||||
isPowerUser: user_signed_in? ? current_user.power_user? : false,
|
||||
authenticityToken: form_authenticity_token,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -2,6 +2,8 @@ require 'rails_helper'
|
||||
|
||||
RSpec.describe User, type: :model do
|
||||
let(:user) { FactoryBot.build(:user) }
|
||||
let(:moderator) { FactoryBot.build(:moderator) }
|
||||
let(:admin) { FactoryBot.build(:admin) }
|
||||
|
||||
it 'should be valid' do
|
||||
expect(user).to be_valid
|
||||
@@ -12,10 +14,6 @@ RSpec.describe User, type: :model do
|
||||
end
|
||||
|
||||
it 'can have the following roles: "user", "moderator" and "admin"' do
|
||||
user = FactoryBot.build(:user)
|
||||
moderator = FactoryBot.build(:moderator)
|
||||
admin = FactoryBot.build(:admin)
|
||||
|
||||
expect(user.role).to eq('user')
|
||||
expect(moderator.role).to eq('moderator')
|
||||
expect(admin.role).to eq('admin')
|
||||
@@ -50,4 +48,10 @@ RSpec.describe User, type: :model do
|
||||
|
||||
expect(invalid_email_user).to be_invalid
|
||||
end
|
||||
|
||||
it 'knows if it is a power user' do
|
||||
expect(user).not_to be_a_power_user
|
||||
expect(moderator).to be_a_power_user
|
||||
expect(admin).to be_a_power_user
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user