Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
gem 'httparty', '~> 0.13.7'
gem 'httparty'
21 changes: 15 additions & 6 deletions app/models/oic_session.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,11 @@ def refresh_access_token!

def self.parse_token(token)
jwt = token.split('.')
return JSON::parse(Base64::decode64(jwt[1]))
begin
return JSON::parse(Base64::decode64(jwt[1]))
rescue => exception
return JSON::parse(Base64::urlsafe_decode64(jwt[1]))
end
end

def claims
Expand Down Expand Up @@ -133,17 +137,22 @@ def authorized?
end

def admin?
if client_config['admin_group'].present? &&
user["member_of"].include?(client_config['admin_group'])
return true
if client_config['admin_group'].present? && user["member_of"].present?
if user["member_of"].include?(client_config['admin_group'])
return true
end
end

return false
end

def user
if @user.blank? || id_token_changed?
@user = JSON::parse(Base64::decode64(id_token.split('.')[1]))
begin
@user = JSON::parse(Base64::decode64(id_token.split('.')[1]))
rescue => exception
@user = JSON::parse(Base64::urlsafe_decode64(id_token.split('.')[1]))
end
end
return @user
end
Expand Down Expand Up @@ -217,7 +226,7 @@ def complete?
end

def scopes
if client_config["scopes"].nil?
if client_config["scopes"].nil?
return "openid profile email user_name"
else
client_config["scopes"].split(',').each(&:strip).join(' ')
Expand Down
2 changes: 1 addition & 1 deletion app/views/account/oic_local_logout.html.erb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Vous avez été déconnecté. <a href="<%= oic_login_url %>">Cliquez ici pour vous connecter à nouveau</a>.
<%= t('local_logout.logout_message') %> <a href="<%= oic_login_url %>"><%= t('local_logout.relogin_message') %></a>
3 changes: 3 additions & 0 deletions config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ en:
group: Authorized group (blank if all users are authorized)
admin_group: Admins group (members of this group are treated as admin)
dynamic_config_expiry: How often to retrieve openid configuration (default 1 day)
local_logout:
logout_message: You have logged out.
relogin_message: Click to re-login.
15 changes: 15 additions & 0 deletions config/locales/zh.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Chinese strings go here for Rails i18n
zh:
config:
enabled: 启用
header: OpenID 连接配置
client_id: 客户端 ID
openid_connect_server_url: OpenID 服务器链接地址
scopes: OpenID Connect scopes (","逗号分隔)
client_secret: 客户端密码
group: 授权组 名称(如果所有用户都被授权,则留空)
admin_group: 管理员组 名称(该组的成员将被视为Redmine管理员)
dynamic_config_expiry: 从服务器拉取配置的时间周期 (单位:秒;默认1天)
local_logout:
logout_message: 您的账户已注销,
relogin_message: 点击重新登陆。