#coding=utf-8 # status值 # 0:成功;-1:500错误;403:无权限;404:页面不存在 module Mobile require_relative 'middleware/error_handler' require_relative 'apis/auth' require_relative 'apis/memos' require_relative 'apis/forum_sections' require_relative 'apis/my_memos' # require_relative 'apis/my_forums' class API < Grape::API version 'v1', using: :path format :json content_type :json, "application/json;charset=UTF-8" # use ActionDispatch::Session::CookieStore use Middleware::ErrorHandler helpers do def logger API.logger end def authenticate! begin # current_user = User.find(2) if current_user.blank? if params[:debug] == 'admin' logger.info("Login as admin user, for test only") User.current = User.find 1 elsif params[:debug] == 'normal' logger.info("Login as normal user, for test only") User.current = User.where(admin:false).first end rescue Exception => e return {:status => -2, :message => 'Unauthorized. 用户认证失败.'} end end # def manager_of_game # myshixun_id = Game.where(:identifier => params[:identifier]).pluck(:myshixun_id).first # myshixun = Myshixun.find(myshixun_id) # unless (current_user.admin? || myshixun.user_id == current_user.id) # return {} # end # end # def session env['rack.session'] end def current_user openid = session[:wechat_openid] if openid uw = UserWechat.find_by_openid(openid) return uw.user if uw end token = ApiKey.where(access_token: params[:token]).first if token && !token.expired? return User.find(token.user_id) end # 本地调试找不到用户信息 if Rails.env.development? && session[:user_id].blank? # session[:user_id] = 12 #116 end if session[:user_id].blank? || params[:debug].present? if params[:debug] == 'admin' Rails.logger.info("######________session_user_id________#############{session[:user_id]}") logger.info("Login as admin user, for test only") User.current = User.find 1 session[:user_id] = 1 elsif params[:debug] == 'normal' logger.info("Login as normal user, for test only") User.current = User.find 49 session[:user_id] = 49 else session[:user_id] = 2 end end Rails.logger.info("####### session user_id is #{session[:user_id]}") if session[:user_id] user = (User.find(session[:user_id]) rescue nil) return user if user end nil end def current_user_ip env['REMOTE_ADDR'] end end mount Apis::Auth mount Apis::Memos mount Apis::ForumSections mount Apis::MyMemos # add_swagger_documentation ({api_version: 'v1', base_path: '/api'}) if Rails.env.development? end end