Initial import
This commit is contained in:
75
lib/authentication_system.rb
Normal file
75
lib/authentication_system.rb
Normal file
@@ -0,0 +1,75 @@
|
||||
module AuthenticationSystem
|
||||
protected
|
||||
def require_login
|
||||
@current_user = User.find(session[:user_id]) if session[:user_id]
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
login_by_token unless logged_in?
|
||||
login_by_html unless logged_in?
|
||||
}
|
||||
format.xml { login_by_basic_auth }
|
||||
end
|
||||
end
|
||||
|
||||
# Na navegacao por html, o login é feito diretamente no controller. Este método
|
||||
# apenas verifica se o usuário já está logado ou não. Caso não esteja, ele é redirecionado.
|
||||
def login_by_html
|
||||
if !logged_in?
|
||||
flash[:warning] = 'You must be logged in to access this section of the site'[:login_required]
|
||||
session[:return_to] = request.request_uri
|
||||
redirect_to :controller => 'users', :action => 'login'
|
||||
end
|
||||
end
|
||||
|
||||
def login_by_basic_auth
|
||||
authenticate_or_request_with_http_basic do |user_name, password|
|
||||
@current_user = User.find_by_login_and_pass(user_name, password)
|
||||
end
|
||||
end
|
||||
|
||||
def login_by_token
|
||||
user = User.find_by_id_and_login_key(*cookies[:login_token].split(";")) if cookies[:login_token]
|
||||
if !user.nil?
|
||||
setup_session(user, true)
|
||||
user.update_attribute(:last_seen, Time.now.utc)
|
||||
end
|
||||
end
|
||||
|
||||
def setup_session(user, create_token = false)
|
||||
@current_user = user
|
||||
session[:user_id] = user.id
|
||||
session[:topics] = session[:forums] = {}
|
||||
cookies[:login_token] = {
|
||||
:value => "#{user.id};#{user.reset_login_key!}",
|
||||
:expires => 1.month.from_now.utc
|
||||
} if create_token
|
||||
end
|
||||
|
||||
def destroy_session
|
||||
session.delete
|
||||
cookies.delete :login_token
|
||||
end
|
||||
|
||||
def redirect_to_stored
|
||||
return_to = session[:return_to]
|
||||
|
||||
if return_to
|
||||
session[:return_to] = nil
|
||||
redirect_to return_to
|
||||
else
|
||||
redirect_to '/'
|
||||
end
|
||||
end
|
||||
|
||||
def logged_in?
|
||||
!@current_user.nil?
|
||||
end
|
||||
|
||||
def admin?
|
||||
logged_in? and @current_user.admin?
|
||||
end
|
||||
end
|
||||
|
||||
class AccessDenied < Exception
|
||||
end
|
||||
|
||||
16
lib/tasks/gibberish.rake
Normal file
16
lib/tasks/gibberish.rake
Normal file
@@ -0,0 +1,16 @@
|
||||
namespace :gibberish do
|
||||
|
||||
# Bela gambiarra
|
||||
desc "Exports all Gibberish translation keys"
|
||||
task :export do
|
||||
ENV['GIBBERISH_EXPORT'] = 'true'
|
||||
|
||||
puts "Running tests ..."
|
||||
`rake test 2> /dev/null`
|
||||
|
||||
puts "Sorting keys ..."
|
||||
$stderr.puts `sort lang/tmp_keys | uniq`
|
||||
|
||||
`rm lang/tmp_keys`
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user