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.
edu/app/controllers/application_controller.rb

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