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_uid = gitea_user['id']
if @user.save!
UserExtension.create!(user_id: @user.id)
render_ok({user: {id: @user.id, token: @user.gitea_token}})
end
else
@ -47,31 +48,54 @@ class AccountsController < ApplicationController
user_mail = u.try(:mail)
if u.present?
u.update_attributes(user_params)
u.user_extension.update_attributes(user_extension_params)
ue = u.user_extension
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
sync_params = {}
if user_params["mail"] && user_params["mail"] != user_mail
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
render_ok({})
end
rescue Exception => e
uid_logger_error(e.message)
tip_exception(-1, e.message)
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
successful_authentication(@user)
login_control.clear # 重置每日密码错误次数
# session[:user_id] = @user.id
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)
user.update_column(:last_login_on, Time.now)
session[:"#{default_yun_session}"] = user.id
Rails.logger.info("#########_____session_default_yun_session__________###############{default_yun_session}")
# 注册完成后有一天的试用申请(先去掉)
# UserDayCertification.create(user_id: user.id, status: 1)
end

View File

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

View File

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

View File

@ -201,7 +201,7 @@ class User < ApplicationRecord
#
# 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 :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

View File

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

View File

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

View File

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