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