Auto-approval and upload fixed

This commit is contained in:
Christoph Haas 2018-08-20 20:07:53 +02:00
parent 0dd63f6bf6
commit 1b299d53e6
5 changed files with 49 additions and 34 deletions

View file

@ -53,17 +53,22 @@ class PackagesController < ApplicationController
new_screenshot.uploaderhash = session[:token]
new_screenshot.uploaderip = session[:ip]
new_screenshot.version = @package.version
new_screenshot.user = current_user
# Can the upload get approved automatically?
if current_user
new_screenshot.approve! if current_user.auto_approve?
if user_signed_in?
new_screenshot.user = current_user
new_screenshot.approve! if auto_approve?
# For anonymous uploads remember which screenshots have been
# uploaded. If the user logs in later the screenshots will
# be linked to their account.
else
# Save the screenshot database record to get an ID
new_screenshot.save!
(session[:uploaded_screenshots] ||= []) << new_screenshot.id
puts "-------------------"
puts session[:uploaded_screenshots]
puts "-------------------"
Log.log "Anonymously uploaded screenshots #{new_screenshot.id} remembered in cookie session to assign it to a user later."
end
@ -315,4 +320,23 @@ class PackagesController < ApplicationController
def params_screenshot_description
params.require(:screenshot).permit(:description)
end
# Do uploads from this user get approved automatically?
def auto_approve?
# Anonymous users need to go through moderation
return false unless user_signed_in?
# 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
end