Auto-approval and upload fixed
This commit is contained in:
parent
0dd63f6bf6
commit
1b299d53e6
5 changed files with 49 additions and 34 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,23 +1,19 @@
|
|||
class Users::MySessionsController < Devise::SessionsController
|
||||
# before_filter :before_login, :only => :create
|
||||
after_filter :after_login, :only => :create
|
||||
|
||||
# def before_login
|
||||
# end
|
||||
after_action :after_login, :only => :create
|
||||
|
||||
# Hook after successful login
|
||||
def after_login
|
||||
Log.log "User #{current_user} logged in."
|
||||
old_screenshots = session[:uploaded_screenshots]
|
||||
raise
|
||||
if count = old_screenshots.to_a.length > 0
|
||||
if old_screenshots.to_a.length > 0
|
||||
old_screenshots.each do |id|
|
||||
ss = Screenshot.find(id)
|
||||
ss.user = @user
|
||||
ss.save!
|
||||
end
|
||||
flash[:info] = "#{count} uploads have been added to your account"
|
||||
flash[:info] = "#{old_screenshots.to_a.length} uploads have been added to your account"
|
||||
Log.log "Anonymously uploaded screenshots #{old_screenshots} added to account."
|
||||
session[:uploaded_screenshots] = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue