Add power_user? method to User model

This commit is contained in:
riggraz
2019-09-16 19:38:56 +02:00
parent 3c6e27be14
commit d05202a2d7
4 changed files with 14 additions and 6 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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,
}
)

View File

@@ -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