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