Refactored auto-approve code to make it more readable
This commit is contained in:
parent
9428d8d7dd
commit
228b7375e7
2 changed files with 17 additions and 3 deletions
|
|
@ -56,9 +56,8 @@ class PackagesController < ApplicationController
|
|||
new_screenshot.version = @package.version
|
||||
new_screenshot.user = current_user
|
||||
|
||||
# Package is not approved by default. Approve automatically
|
||||
# for authenticated users.
|
||||
new_screenshot.approve! if current_user and not current_user.is_anonymous?
|
||||
# Can the upload get approved automatically?
|
||||
new_screenshot.approve! if current_user and current_user.auto_approve?
|
||||
|
||||
new_screenshot.save
|
||||
Log.log "Screenshot #{new_screenshot.id} uploaded successfully from #{session[:ip]}. User has token #{session[:token]} or is #{current_user}"
|
||||
|
|
|
|||
|
|
@ -50,6 +50,21 @@ class User < ApplicationRecord
|
|||
self.provider == nil
|
||||
end
|
||||
|
||||
# Do uploads from this user get approved automatically?
|
||||
def auto_approve?
|
||||
# Admins do not need moderation
|
||||
return true if current_user.is_admin?
|
||||
|
||||
# Debian developers do not need moderation
|
||||
return true if current_user.provider == 'debian-sso'
|
||||
|
||||
# After one successfully approved screenshot users do not need moderation
|
||||
return true if current_user.approved_screenshots.count > 0
|
||||
|
||||
# Any other user's upload must be moderated
|
||||
return false
|
||||
end
|
||||
|
||||
def self.from_omniauth(auth)
|
||||
where(provider: auth.provider, email: auth.info.email).first_or_create do |user|
|
||||
user.provider = auth.provider
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue