Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun
	
		
	
				
					
				
			
						commit
						00bb86130d
					
				| @ -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 | ||||||
					Loading…
					
					
				
		Reference in new issue