修复确实logo跳转、个人头像地址、导航条、个人资料哦修改
This commit is contained in:
parent
5f2c499a59
commit
caf6840a98
|
@ -41,7 +41,7 @@ module LaboratoryHelper
|
||||||
my_courses: "https://www.trustie.net/users/#{current_user.try(:login)}/user_courselist",
|
my_courses: "https://www.trustie.net/users/#{current_user.try(:login)}/user_courselist",
|
||||||
my_projects: "/users/#{current_user.try(:login)}/projects",
|
my_projects: "/users/#{current_user.try(:login)}/projects",
|
||||||
my_organ: "https://www.trustie.net/users/#{current_user.try(:login)}/user_organizations",
|
my_organ: "https://www.trustie.net/users/#{current_user.try(:login)}/user_organizations",
|
||||||
default_url: "https://www.trustie.net/",
|
default_url: "/",
|
||||||
tiding_url: "https://www.trustie.net/users/#{current_user.try(:login)}/user_messages",
|
tiding_url: "https://www.trustie.net/users/#{current_user.try(:login)}/user_messages",
|
||||||
register_url: "https://www.trustie.net/login?login=false"
|
register_url: "https://www.trustie.net/login?login=false"
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,4 +28,34 @@ module RegisterHelper
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ccyun_autologin_register(username, email, password, platform= 'forge', options)
|
||||||
|
result = {message: nil, user: nil}
|
||||||
|
user = User.new(admin: false, login: username, mail: email, type: "User")
|
||||||
|
user.password = password
|
||||||
|
user.platform = platform
|
||||||
|
user.nickname = options["nickname"]
|
||||||
|
user.phone = options["mobile"]
|
||||||
|
user.lastname = options["name"]
|
||||||
|
user.activate
|
||||||
|
|
||||||
|
##puts "register user ===== #{user.valid?}"
|
||||||
|
|
||||||
|
#return unless user.valid?
|
||||||
|
|
||||||
|
interactor = Gitea::RegisterInteractor.call({username: username, email: email, password: password})
|
||||||
|
if interactor.success?
|
||||||
|
gitea_user = interactor.result
|
||||||
|
result = Gitea::User::GenerateTokenService.call(username, password)
|
||||||
|
user.gitea_token = result['sha1']
|
||||||
|
user.gitea_uid = gitea_user[:body]['id']
|
||||||
|
if user.save!
|
||||||
|
UserExtension.create!(user_id: user.id)
|
||||||
|
result[:user] = {id: user.id, token: user.gitea_token}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
result[:message] = interactor.error
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -46,35 +46,32 @@ class Oauth::CcyunController < Oauth::BaseController
|
||||||
new_user = false
|
new_user = false
|
||||||
result = CcyunOauth::Service.access_token(code)
|
result = CcyunOauth::Service.access_token(code)
|
||||||
result = CcyunOauth::Service.user_info(result[:access_token])
|
result = CcyunOauth::Service.user_info(result[:access_token])
|
||||||
uid = result["mobile"]
|
uid = result["personalId"]
|
||||||
|
|
||||||
# 存在该用户
|
# 存在该用户
|
||||||
open_user = OpenUsers::Ccyun.find_by(uid: uid)
|
open_user = OpenUsers::Ccyun.find_by(uid: uid)
|
||||||
Rails.logger.info("open_user #{open_user}")
|
Rails.logger.info("open_user #{open_user}")
|
||||||
if open_user.present? && open_user.user.present?
|
if open_user.present? && open_user.user.present?
|
||||||
successful_authentication(open_user.user)
|
## 同步用户信息
|
||||||
|
finalUser = syncRemoteServerUser(open_user.user, result)
|
||||||
|
successful_authentication(finalUser)
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
if current_user.blank? || !current_user.logged?
|
new_user = true
|
||||||
new_user = true
|
# 使用XC提供的身份ID进行注册
|
||||||
|
# login = result['personalId'].to_s
|
||||||
|
login = User.generate_login('E')
|
||||||
|
|
||||||
# 使用XC提供的身份ID进行注册
|
# 自动注册到平台
|
||||||
# login = result['personalId'].to_s
|
reg_result = ccyun_autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'ccyun', result)
|
||||||
login = User.generate_login('E')
|
|
||||||
|
|
||||||
# 自动注册到平台
|
|
||||||
reg_result = autologin_register(login,"#{login}@forge.com", "Ec#{login}2021#", 'ccyun')
|
|
||||||
|
|
||||||
Rails.logger.info("reg_result=====> #{reg_result}")
|
if reg_result[:message].blank?
|
||||||
|
open_user = OpenUsers::Ccyun.create!(user_id: reg_result[:user][:id], uid: uid, extra: result)
|
||||||
if reg_result[:message].blank?
|
# autosync_register_trustie(login, "Ec#{login}2021#", "#{login}@forge.com")
|
||||||
open_user = OpenUsers::Ccyun.create!(user_id: reg_result[:user][:id], uid: uid, extra: result)
|
successful_authentication(open_user.user)
|
||||||
# autosync_register_trustie(login, "Ec#{login}2021#", "#{login}@forge.com")
|
|
||||||
successful_authentication(open_user.user)
|
|
||||||
else
|
|
||||||
render_error(reg_result[:message])
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
OpenUsers::Ccyun.create!(user: current_user, uid: uid, extra: result)
|
render_error(reg_result[:message])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -84,4 +81,9 @@ class Oauth::CcyunController < Oauth::BaseController
|
||||||
render_error(ex.message)
|
render_error(ex.message)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
private
|
||||||
|
def syncRemoteServerUser(user, options)
|
||||||
|
User.update(user.id, {:nickname=> options["nickname"], :phone=> options["mobile"], :lastname=> options["name"]})
|
||||||
|
end
|
||||||
|
end
|
|
@ -13,19 +13,21 @@ class SettingsController < ApplicationController
|
||||||
@third_party = []
|
@third_party = []
|
||||||
@third_party << {
|
@third_party << {
|
||||||
name: 'ccyun',
|
name: 'ccyun',
|
||||||
url: CcyunOauth.oauth_url
|
url: CcyunOauth.oauth_url,
|
||||||
|
profile_url:CcyunOauth.profile_url
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_add_menu
|
def get_add_menu
|
||||||
@add = []
|
@add = []
|
||||||
Site.add.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
# Site.add.select(:id, :name, :url, :key).to_a.map(&:serializable_hash).each do |site|
|
||||||
hash = {}
|
# hash = {}
|
||||||
site.each {|k, v|
|
# site.each {|k, v|
|
||||||
hash.merge!("#{k}": get_site_url(k, v))
|
# hash.merge!("#{k}": get_site_url(k, v))
|
||||||
}
|
# }
|
||||||
@add << hash
|
# @add << hash
|
||||||
end
|
# end
|
||||||
|
@add
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_common_menu
|
def get_common_menu
|
||||||
|
|
|
@ -143,7 +143,16 @@ module ApplicationHelper
|
||||||
File.join("images/avatars", ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
|
File.join("images/avatars", ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
|
||||||
end
|
end
|
||||||
elsif source.class.to_s == 'User'
|
elsif source.class.to_s == 'User'
|
||||||
source.get_letter_avatar_url
|
if "ccyun" == source[:platform]
|
||||||
|
openUser = OpenUser.find_by user_id: source[:id]
|
||||||
|
img = "https://www.ccyunchina.com/appPortal/assets/img/head.eba2ec4e.jpg"
|
||||||
|
if openUser&.extra["avatar"]
|
||||||
|
img = openUser&.extra["avatar"]
|
||||||
|
end
|
||||||
|
img
|
||||||
|
else
|
||||||
|
source.get_letter_avatar_url
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
module CcyunOauth
|
module CcyunOauth
|
||||||
class << self
|
class << self
|
||||||
attr_accessor :client_id, :client_secret, :base_url, :redirect_uri
|
attr_accessor :client_id, :client_secret, :base_url, :redirect_uri, :profile_url
|
||||||
|
|
||||||
def logger
|
def logger
|
||||||
@_logger ||= STDOUT
|
@_logger ||= STDOUT
|
||||||
|
@ -11,7 +11,7 @@ module CcyunOauth
|
||||||
end
|
end
|
||||||
|
|
||||||
def oauth_url
|
def oauth_url
|
||||||
"#{base_url}/oauth/authorize?client_id=#{client_id}&redirect_uri=#{URI.encode_www_form_component(redirect_uri)}&response_type=code&state=1"
|
"#{base_url}/auth/oauth/authorize?client_id=#{client_id}&redirect_uri=#{URI.encode_www_form_component(redirect_uri)}&response_type=code&state=1"
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,7 +10,7 @@ module CcyunOauth::Service
|
||||||
response = Faraday.get(url, params, nil)
|
response = Faraday.get(url, params, nil)
|
||||||
Rails.logger.info("[CcyunOauth] [response] #{response.body}")
|
Rails.logger.info("[CcyunOauth] [response] #{response.body}")
|
||||||
result = JSON.parse(response.body)
|
result = JSON.parse(response.body)
|
||||||
result
|
result["data"]
|
||||||
rescue Exception => e
|
rescue Exception => e
|
||||||
raise CcyunOauth::Error.new(result['error'], result['error_description'])
|
raise CcyunOauth::Error.new(result['error'], result['error_description'])
|
||||||
end
|
end
|
||||||
|
@ -19,7 +19,7 @@ module CcyunOauth::Service
|
||||||
def access_token(code)
|
def access_token(code)
|
||||||
begin
|
begin
|
||||||
Rails.logger.info("[CcyunOauth] [code] #{code} ")
|
Rails.logger.info("[CcyunOauth] [code] #{code} ")
|
||||||
client = OAuth2::Client.new(CcyunOauth.client_id, CcyunOauth.client_secret, site: CcyunOauth.base_url)
|
client = OAuth2::Client.new(CcyunOauth.client_id, CcyunOauth.client_secret, site: CcyunOauth.base_url, token_url: "/auth/oauth/token")
|
||||||
result = client.auth_code.get_token(code, redirect_uri: CcyunOauth.redirect_uri).to_hash
|
result = client.auth_code.get_token(code, redirect_uri: CcyunOauth.redirect_uri).to_hash
|
||||||
return result
|
return result
|
||||||
rescue Exception => e
|
rescue Exception => e
|
||||||
|
@ -28,6 +28,6 @@ module CcyunOauth::Service
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_info(access_token)
|
def user_info(access_token)
|
||||||
request(:get, "#{CcyunOauth.base_url}/user-api/userInfo", {access_token: access_token})
|
request(:post, "#{CcyunOauth.base_url}/user-api/user/userInfo", {access_token: access_token})
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -15,12 +15,13 @@ class Site < ApplicationRecord
|
||||||
# add: 添加类链接
|
# add: 添加类链接
|
||||||
# personal: 个人名下类链接,
|
# personal: 个人名下类链接,
|
||||||
# common: 普通链接
|
# common: 普通链接
|
||||||
enum site_type: { add: 0, personal: 1, common: 2 }
|
enum site_type: { add: 0, personal: 1, common: 2 , third_party: 3}
|
||||||
|
|
||||||
def self.set_default_menu
|
def self.set_default_menu
|
||||||
set_add_menu!
|
set_add_menu!
|
||||||
set_personal_menu!
|
set_personal_menu!
|
||||||
set_common_menu!
|
set_common_menu!
|
||||||
|
set_third_party!
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -69,4 +70,17 @@ class Site < ApplicationRecord
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.set_third_party!
|
||||||
|
third_partys = [
|
||||||
|
]
|
||||||
|
|
||||||
|
third_partys.each { |ele|
|
||||||
|
Site.find_or_create_by(key: ele[:key]) do |site|
|
||||||
|
site.name = ele[:name]
|
||||||
|
site.url = ele[:url]
|
||||||
|
site.site_type = Site.site_types[:third_party]
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,8 +18,8 @@ json.setting do
|
||||||
#
|
#
|
||||||
# end
|
# end
|
||||||
|
|
||||||
nav_bar = default_setting.navbar
|
|
||||||
|
|
||||||
|
nav_bar = default_setting.navbar
|
||||||
# if User.current.logged?
|
# if User.current.logged?
|
||||||
# nav_bar[2]["link"] = "https://forgeplus.trustie.net/users/#{current_user.login}/projects"
|
# nav_bar[2]["link"] = "https://forgeplus.trustie.net/users/#{current_user.login}/projects"
|
||||||
# nav_bar[2]["hidden"] = false
|
# nav_bar[2]["hidden"] = false
|
||||||
|
|
|
@ -14,3 +14,4 @@ CcyunOauth.client_id = oauth_config['client_id']
|
||||||
CcyunOauth.client_secret = oauth_config['client_secret']
|
CcyunOauth.client_secret = oauth_config['client_secret']
|
||||||
CcyunOauth.base_url = oauth_config['base_url']
|
CcyunOauth.base_url = oauth_config['base_url']
|
||||||
CcyunOauth.redirect_uri = oauth_config['redirect_uri']
|
CcyunOauth.redirect_uri = oauth_config['redirect_uri']
|
||||||
|
CcyunOauth.profile_url = oauth_config['profile_url']
|
||||||
|
|
Loading…
Reference in New Issue