jam-cloud/web/app/helpers/sessions_helper.rb

137 lines
2.9 KiB
Ruby

module SessionsHelper
def sign_in(user)
set_remember_token(user)
self.current_user = user
end
def set_remember_token(user)
if @session_only_cookie
cookies.delete(:remember_token)
cookies[:remember_token] = {
value: user.remember_token,
domain: Rails.application.config.session_cookie_domain
}
else
cookies[:remember_token] = {
value: user.remember_token,
expires: 20.years.from_now.utc,
domain: Rails.application.config.session_cookie_domain
}
end
end
def signed_in?
!current_user.nil?
end
def has_anonymous_user?
!anonymous_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def anonymous_user=(anonymous_user)
@anonymous_user = anonymous_user
end
def anonymous_user
if anon_cookie
@anonymous_user ||= AnonymousUser.new(anon_cookie)
else
nil
end
end
# tries current_user over anonymous_user
def any_user
current_user || anonymous_user
end
def anon_cookie
@anon_cookie ||= cookies[:user_uuid]
end
def current_user?(user)
user == current_user
end
def signed_in_user
unless signed_in?
store_location
redirect_to signin_url, notice: "Please sign in."
end
end
def api_signed_in_user
unless signed_in?
render :json => { :message => "not logged in"}, :status => 403
end
end
# take either the signed in user, or if that fails, try the anonymous user
def api_any_user
unless signed_in? || has_anonymous_user?
render :json => { :message => "not logged in"}, :status => 403
end
end
def sign_out
current_user = nil
cookies.delete(:remember_token, domain: Rails.application.config.session_cookie_domain)
end
def admin_user
redirect_to(root_url) unless current_user.admin?
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.url
end
def jkclient_agent?
request.env['HTTP_USER_AGENT'] =~ /JamKazam/
end
# used to help GA tracking. should result in one of Visitor, Registered User, or Paying Subscriber
def ga_user_level
if current_user.nil?
'Visitor'
else
'Registered User' # TODO: when paying subscriber exists, add to it
end
end
# used to help GA tracking. should result in either Fan or Musician
def ga_user_type
if current_user.nil?
'Fan'
else
current_user.musician? ? 'Musician' : 'Fan'
end
end
def logged_in_not_logged_in_class
signed_in? ? "logged-in" : "not-logged-in"
end
def metronome_tempos
[
40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 63, 66, 69, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 126, 132, 138, 144, 152, 160, 168, 176, 184, 192, 200, 208
]
end
end