This commit is contained in:
vilet.yy 2021-04-02 18:08:36 +08:00
parent c4a43c4392
commit fba58800a7
6 changed files with 60 additions and 30 deletions

View File

@ -357,7 +357,10 @@ class ApplicationController < ActionController::Base
uid_logger("user setup start: session[:user_id] is #{session[:user_id]}")
uid_logger("0000000000000user setup start: default_yun_session is #{default_yun_session}, session[:current_user_id] is #{session[:"#{default_yun_session}"]}")
current_domain_session = session[:"#{default_yun_session}"]
Rails.logger.info "#{session[:user_id]}==============="
if current_domain_session
Rails.logger.info "#{current_domain_session}==============="
# existing session
User.current = (User.active.find(current_domain_session) rescue nil)
elsif autologin_user = try_to_autologin

View File

@ -1,14 +1,14 @@
module RegisterHelper
extend ActiveSupport::Concern
def autologin_register(username, email, password, platform= 'forge', need_edit_password = false)
def autologin_register(username, email, password, platform= 'forge', need_edit_info = false)
result = {message: nil, user: nil}
user = User.new(admin: false, login: username, mail: email, type: "User")
user.password = password
user.platform = platform
if need_edit_password
user.need_edit_password
if need_edit_info
user.need_edit_info
else
user.activate
end
@ -31,4 +31,30 @@ module RegisterHelper
result
end
def autosync_register_trustie(username, password, email)
config = Rails.application.config_for(:configuration).symbolize_keys!
api_host = config[:sync_url]
return if api_host.blank?
url = "#{api_host}/api/v1/users"
sync_json = {
"mail": email,
"password": password,
"login": username
}
uri = URI.parse(url)
if api_host
http = Net::HTTP.new(uri.hostname, uri.port)
if api_host.include?("https://")
http.use_ssl = true
end
http.send_request('POST', uri.path, sync_json.to_json, {'Content-Type' => 'application/json'})
end
end
end

View File

@ -56,6 +56,7 @@ class Oauth::EducoderController < Oauth::BaseController
reg_result = autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'educoder', true)
if reg_result[:message].blank?
open_user = OpenUsers::Educoder.create!(user_id: reg_result[:user][:id], uid: result['login'], extra: result)
autosync_register_trustie(login, "Ec#{login}2021#", "#{login}@forge.com")
successful_authentication(open_user.user)
else
render_error(reg_result[:message])

View File

@ -1,19 +1,19 @@
# == Schema Information
#
# Table name: tokens
#
# id :integer not null, primary key
# user_id :integer default("0"), not null
# action :string(30) default(""), not null
# value :string(40) default(""), not null
# created_on :datetime not null
#
# Indexes
#
# index_tokens_on_user_id (user_id)
# tokens_value (value) UNIQUE
#
# == Schema Information
#
# Table name: tokens
#
# id :integer not null, primary key
# user_id :integer default("0"), not null
# action :string(30) default(""), not null
# value :string(40) default(""), not null
# created_on :datetime not null
#
# Indexes
#
# index_tokens_on_user_id (user_id)
# tokens_value (value) UNIQUE
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -76,7 +76,7 @@ class Token < ActiveRecord::Base
# Returns the active user who owns the key for the given action
def self.find_active_user(action, key, validity_days=nil)
user = find_user(action, key, validity_days)
if user && user.active?
if user && (user.active? || user.need_edit_info?)
user
end
end

View File

@ -79,7 +79,7 @@ class User < Owner
STATUS_ACTIVE = 1
STATUS_REGISTERED = 2
STATUS_LOCKED = 3
STATUS_EDIT_PASSWORD = 4
STATUS_EDIT_INFO = 4
# tpi tpm权限控制
EDU_ADMIN = 1 # 超级管理员
@ -162,7 +162,7 @@ class User < Owner
has_many :organizations, through: :organization_users
# Groups and active users
scope :active, lambda { where(status: [STATUS_ACTIVE, STATUS_EDIT_PASSWORD]) }
scope :active, lambda { where(status: [STATUS_ACTIVE, STATUS_EDIT_INFO]) }
scope :like, lambda { |keywords|
where("LOWER(concat(lastname, firstname, login, mail)) LIKE ?", "%#{keywords.split(" ").join('|')}%") unless keywords.blank?
}
@ -379,8 +379,8 @@ class User < Owner
status == STATUS_LOCKED
end
def need_edit_password?
status == STATUS_EDIT_PASSWORD
def need_edit_info?
status == STATUS_EDIT_INFO
end
def activate
@ -395,8 +395,8 @@ class User < Owner
self.status = STATUS_LOCKED
end
def need_edit_password
self.status = STATUS_EDIT_PASSWORD
def need_edit_info
self.status = STATUS_EDIT_INFO
end
def activate!
@ -411,8 +411,8 @@ class User < Owner
update_attribute(:status, STATUS_LOCKED)
end
def need_edit_password!
update_attribute(:status, STATUS_LOCKED)
def need_edit_info!
update_attribute(:status, STATUS_EDIT_INFO)
end
# 课程用户身份

View File

@ -8,9 +8,9 @@ json.is_teacher @user.user_extension&.teacher?
json.user_identity @user.identity
json.tidding_count 0
json.user_phone_binded @user.phone.present?
json.need_edit_password @user.need_edit_password?
json.need_edit_info @user.need_edit_info?
# json.phone @user.phone
# json.email @user.mail
json.email @user.mail
json.profile_completed @user.profile_completed?
json.professional_certification @user.professional_certification
json.devops_step @user.devops_step