Merge branch 'develop' of http://git.trustie.net/jasder/forgeplus into develop

This commit is contained in:
Jasder 2020-04-15 17:05:00 +08:00
commit 6951f6a795
7 changed files with 73 additions and 26 deletions

View File

@ -26,6 +26,7 @@ class AccountsController < ApplicationController
@user.gitea_token = result['sha1'] @user.gitea_token = result['sha1']
@user.gitea_uid = gitea_user['id'] @user.gitea_uid = gitea_user['id']
if @user.save! if @user.save!
UserExtension.create!(user_id: @user.id)
render_ok({user: {id: @user.id, token: @user.gitea_token}}) render_ok({user: {id: @user.id, token: @user.gitea_token}})
end end
else else
@ -47,31 +48,54 @@ class AccountsController < ApplicationController
user_mail = u.try(:mail) user_mail = u.try(:mail)
if u.present? if u.present?
u.update_attributes(user_params) ue = u.user_extension
u.user_extension.update_attributes(user_extension_params) u.login = user_params["login"] if user_params["login"]
u.mail = user_params["mail"] if user_params["mail"]
u.lastname = user_params["lastname"] if user_params["lastname"]
u.password = user_params["password"] if user_params["password"]
ue.gender = user_extension_params["gender"]
ue.school_id = user_extension_params["school_id"]
ue.location = user_extension_params["location"]
ue.location_city = user_extension_params["location_city"]
ue.identity = user_extension_params["identity"]
ue.technical_title = user_extension_params["technical_title"]
ue.student_id = user_extension_params["student_id"]
ue.description = user_extension_params["description"]
ue.save!
u.save!
sync_params = {}
if (user_params["mail"] && user_params["mail"] != user_mail) || (user_params["login"] && user_params["login"] != params[:old_user_login])
sync_params = sync_params.merge(email: user_params["mail"], login_name: user_params["login"], full_name: user_params["login"])
end
if sync_params.present?
update_gitea = Gitea::User::UpdateService.call("", params[:old_user_login], sync_params)
Rails.logger.info("########________update_gitea__________###########__status:_#{update_gitea.status}")
end
end end
sync_params = {}
if user_params["mail"] && user_params["mail"] != user_mail render_ok({})
sync_params.merge(email: user_params["mail"])
end
if user_params["login"] && user_params["login"] != params[:old_user_login]
sync_params.merge(username: user_params["login"])
end
sync_params = sync_params.compact
if sync_params.present?
admin_user = User.find(1)
update_gitea = Gitea::User::UpdateService.call(admin_user, sync_params)
Rails.logger.info("########________update_gitea__________###########__status:_#{update_gitea.status}")
end
end end
rescue Exception => e rescue Exception => e
uid_logger_error(e.message) uid_logger_error(e.message)
tip_exception(-1, e.message) tip_exception(-1, e.message)
end end
# 其他平台同步登录
def remote_login
@user = User.try_to_login(params[:login], params[:password])
if @user
successful_authentication(@user)
render_ok({user: {id: @user.id, token: @user.gitea_token}})
else
render_error("用户不存在")
end
end
# 用户注册 # 用户注册
@ -162,7 +186,6 @@ class AccountsController < ApplicationController
end end
successful_authentication(@user) successful_authentication(@user)
login_control.clear # 重置每日密码错误次数
# session[:user_id] = @user.id # session[:user_id] = @user.id
end end
@ -208,6 +231,7 @@ class AccountsController < ApplicationController
UserAction.create(:action_id => user.try(:id), :action_type => "Login", :user_id => user.try(:id), :ip => request.remote_ip) UserAction.create(:action_id => user.try(:id), :action_type => "Login", :user_id => user.try(:id), :ip => request.remote_ip)
user.update_column(:last_login_on, Time.now) user.update_column(:last_login_on, Time.now)
session[:"#{default_yun_session}"] = user.id session[:"#{default_yun_session}"] = user.id
Rails.logger.info("#########_____session_default_yun_session__________###############{default_yun_session}")
# 注册完成后有一天的试用申请(先去掉) # 注册完成后有一天的试用申请(先去掉)
# UserDayCertification.create(user_id: user.id, status: 1) # UserDayCertification.create(user_id: user.id, status: 1)
end end

View File

@ -21,6 +21,10 @@ module LoginHelper
if edu_setting('cookie_domain').present? if edu_setting('cookie_domain').present?
cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain'))
end end
Rails.logger.info("####_______token___________#### #{token}")
Rails.logger.info("####_______cookie_options__________#### #{cookie_options}")
Rails.logger.info("####_______autologin_cookie_name__________#### #{autologin_cookie_name}")
cookies[autologin_cookie_name] = cookie_options cookies[autologin_cookie_name] = cookie_options
Rails.logger.info("cookies is #{cookies}") Rails.logger.info("cookies is #{cookies}")
end end
@ -40,13 +44,22 @@ module LoginHelper
end end
def logout_user def logout_user
Rails.logger.info("####################__11111______######")
if User.current.logged? if User.current.logged?
Rails.logger.info("####################__2222_______######")
if autologin = cookies.delete(autologin_cookie_name) if autologin = cookies.delete(autologin_cookie_name)
Rails.logger.info("####################__33333______######")
User.current.delete_autologin_token(autologin) User.current.delete_autologin_token(autologin)
end end
Rails.logger.info("####################__4444444______######")
User.current.delete_session_token(session[:tk]) User.current.delete_session_token(session[:tk])
self.logged_user = nil self.logged_user = nil
end end
Rails.logger.info("####################__55555______######")
# 云上实验室退出清理当前session # 云上实验室退出清理当前session
laboratory ||= (Laboratory.find_by_subdomain(request.subdomain) || Laboratory.find(1)) laboratory ||= (Laboratory.find_by_subdomain(request.subdomain) || Laboratory.find(1))
default_yun_session = "#{laboratory.try(:identifier).split('.').first}_user_id" default_yun_session = "#{laboratory.try(:identifier).split('.').first}_user_id"
@ -58,6 +71,8 @@ module LoginHelper
def logged_user=(user) def logged_user=(user)
# reset_session # reset_session
if user && user.is_a?(User) if user && user.is_a?(User)
Rails.logger.info("########________logged_user___________###########{user.id}")
User.current = user User.current = user
start_user_session(user) start_user_session(user)
else else
@ -78,6 +93,7 @@ module LoginHelper
# # end # # end
# session[:user_id] = user.id # session[:user_id] = user.id
Rails.logger.info("########________start_user_session___________###########{user.id}")
session[:"#{default_yun_session}"] = user.id session[:"#{default_yun_session}"] = user.id
session[:ctime] = Time.now.utc.to_i session[:ctime] = Time.now.utc.to_i
session[:atime] = Time.now.utc.to_i session[:atime] = Time.now.utc.to_i

View File

@ -109,11 +109,11 @@ class UsersController < ApplicationController
end end
def user_params def user_params
params.require(:user).permit(:nickname, :lastname, :show_realname, params.require(:user).permit(:nickname, :lastname, :show_realname,:login,:mail,
user_extension_attributes: [ user_extension_attributes: [
:gender, :location, :location_city, :gender, :location, :location_city,
:occupation, :technical_title, :occupation, :technical_title,
:school_id, :department_id] :school_id, :department_id,:identity, :student_id, :description]
) )
end end

View File

@ -201,7 +201,7 @@ class User < ApplicationRecord
# #
# validations # validations
# #
validates_presence_of :login, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }, case_sensitive: false # validates_presence_of :login, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }, case_sensitive: false
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, case_sensitive: false
validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, case_sensitive: false validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, case_sensitive: false
# validates_uniqueness_of :phone, :if => Proc.new { |user| user.phone_changed? && user.phone.present? }, case_sensitive: false # validates_uniqueness_of :phone, :if => Proc.new { |user| user.phone_changed? && user.phone.present? }, case_sensitive: false

View File

@ -1,6 +1,6 @@
class Gitea::User::UpdateService < Gitea::ClientService class Gitea::User::UpdateService < Gitea::ClientService
attr_reader :admin_user, :params # attr_reader :admin_user, :params
attr_reader :token, :old_login, :params
# 只有管理员才能修改用户信息 # 只有管理员才能修改用户信息
# params: # params:
# admin boolean # admin boolean
@ -18,8 +18,10 @@ class Gitea::User::UpdateService < Gitea::ClientService
# source_id integer($int64) # source_id integer($int64)
# website string # website string
def initialize(admin_user, params={}) def initialize(token, old_login, params={})
@admin_user = admin_user @token = token
@params = params
@old_login = old_login
end end
def call def call
@ -27,11 +29,12 @@ class Gitea::User::UpdateService < Gitea::ClientService
end end
private private
def url def url
"/admin/users/#{params[:login_name]}" "/admin/users/#{old_login}"
end end
def data_params def data_params
Hash.new.merge(token: admin_user.gitea_token, data: params) Hash.new.merge(token: token, data: params)
end end
end end

View File

@ -33,6 +33,9 @@ module Educoderplus
provider :cas, url: 'https://urp.tfswufe.edu.cn/cas' provider :cas, url: 'https://urp.tfswufe.edu.cn/cas'
end end
# config.middleware.use ActionDispatch::Cookies
# config.middleware.use ActionDispatch::Session::CookieStore
config.middleware.insert_before 0, Rack::Cors do config.middleware.insert_before 0, Rack::Cors do
allow do allow do
origins '*' origins '*'

View File

@ -123,6 +123,7 @@ Rails.application.routes.draw do
get :valid_email_and_phone get :valid_email_and_phone
post :remote_register post :remote_register
post :remote_update post :remote_update
post :remote_login
end end
end end