You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
class ApplicationController < ActionController::Base
|
|
include LoggerHelper
|
|
include LoginHelper
|
|
include ApplicationHelper
|
|
before_action :user_setup
|
|
def generate_code(size)
|
|
%W(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m o p q r s t u v w x y z).sample(size).join
|
|
end
|
|
def info(status = 0, message, data)
|
|
case status
|
|
when 403
|
|
message = "您没有访问权限,请先获取相应权限~"
|
|
when 404
|
|
message = "您访问的页面不存在或已被删除"
|
|
end
|
|
render :json => { status: status, message: message,data: data}
|
|
end
|
|
|
|
def current_user
|
|
User.current
|
|
end
|
|
|
|
def user_setup
|
|
|
|
|
|
User.current = find_current_user
|
|
p User.current
|
|
UserOnline.login(session[:request_user_id]) if session[:request_user_id]
|
|
end
|
|
def find_current_user
|
|
if session[:user_id]
|
|
(User.active.find(session[:user_id]) rescue nil)
|
|
elsif session_login_user = try_to_token_session
|
|
session_login_user
|
|
elsif autologin_user = try_to_autologin
|
|
autologin_user # 只有当没有重要考试的时候才会走这里登陆
|
|
else
|
|
User.anonymous
|
|
end
|
|
end
|
|
|
|
def try_to_token_session
|
|
session_id = cookies[User::SESSION_ACTION]
|
|
if session_id.present?
|
|
user = User.try_to_session_id(session_id)
|
|
start_user_session(user) if user
|
|
user
|
|
end
|
|
end
|
|
def try_to_autologin
|
|
token = cookies[autologin_cookie_name] || request.headers["Authorization"]
|
|
if token.present?
|
|
# auto-login feature starts a new session
|
|
user = User.try_to_autologin(token)
|
|
# return false if user.present? && helpers.get_exercise_by_user(user).size > 0 # 如果有正在进行的登录限制考试则不走这块
|
|
start_user_session(user) if user
|
|
user
|
|
end
|
|
end
|
|
end
|