commit
49b5cc072b
@ -0,0 +1,13 @@
|
|||||||
|
class Oauth::CasController < Oauth::BaseController
|
||||||
|
def create
|
||||||
|
user, is_new_user = Oauth::CreateORFindCasUserService.call(current_user, auth_hash)
|
||||||
|
successful_authentication(user)
|
||||||
|
|
||||||
|
render_ok(new_user: is_new_user)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
def auth_hash
|
||||||
|
JSON.parse(CGI.unescape(request.env['omniauth.auth'].extra.to_json))
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,9 @@
|
|||||||
|
class OpenUsers::Cas < OpenUser
|
||||||
|
def nickname
|
||||||
|
extra&.[]('nickname')
|
||||||
|
end
|
||||||
|
|
||||||
|
def en_type
|
||||||
|
'cas'
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,31 @@
|
|||||||
|
class Oauth::CreateORFindCasUserService < ApplicationService
|
||||||
|
|
||||||
|
def initialize(user, params)
|
||||||
|
@user = user
|
||||||
|
@params = params
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
return [@user, false] if @user
|
||||||
|
|
||||||
|
open_user = OpenUsers::Cas.find_or_initialize_by(uid: @params['user']) do |u|
|
||||||
|
u.extra = @params
|
||||||
|
end
|
||||||
|
|
||||||
|
return [open_user.user, false] if open_user.persisted?
|
||||||
|
|
||||||
|
@user = User.new(login: User.generate_login('C'), type: 'User', status: User::STATUS_ACTIVE, nickname: @params['comsys_name'], lastname: @params['comsys_name'])
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
@user.save!
|
||||||
|
@user.create_user_extension!
|
||||||
|
|
||||||
|
open_user.user = @user
|
||||||
|
open_user.save!
|
||||||
|
|
||||||
|
Rails.cache.write(open_user.can_bind_cache_key, 1, expires_in: 1.hours)
|
||||||
|
end
|
||||||
|
|
||||||
|
[@user, true]
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,12 @@
|
|||||||
|
json.activities @activities do |activity|
|
||||||
|
json.(activity, :course_act_id, :course_act_type)
|
||||||
|
json.author do
|
||||||
|
user = activity.user
|
||||||
|
json.name user.real_name
|
||||||
|
json.login user.login
|
||||||
|
json.img url_to_avatar(user)
|
||||||
|
end
|
||||||
|
json.created_at activity.created_at.strftime('%m-%d %H:%M:')
|
||||||
|
json.container_name activity.container_name
|
||||||
|
json.container_type activity.course_act_type == "HomeworkCommon" ? activity.course_act&.homework_type : ""
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
class MigrateCourseMessageAct < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
CourseActivity.where(course_act_type: "JoinCourse").update_all(course_act_type: "CourseMessage")
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in new issue