diff --git a/Gemfile b/Gemfile
index 2eb3f45..1ef1c3a 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1 +1 @@
-gem 'httparty', '~> 0.13.7'
+gem 'httparty'
diff --git a/app/models/oic_session.rb b/app/models/oic_session.rb
index 045a123..8793bbd 100644
--- a/app/models/oic_session.rb
+++ b/app/models/oic_session.rb
@@ -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
@@ -133,9 +137,10 @@ 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
@@ -143,7 +148,11 @@ def admin?
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
@@ -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(' ')
diff --git a/app/views/account/oic_local_logout.html.erb b/app/views/account/oic_local_logout.html.erb
index 3b88528..add234f 100644
--- a/app/views/account/oic_local_logout.html.erb
+++ b/app/views/account/oic_local_logout.html.erb
@@ -1 +1 @@
-Vous avez été déconnecté. Cliquez ici pour vous connecter à nouveau.
+<%= t('local_logout.logout_message') %> <%= t('local_logout.relogin_message') %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index ecb876d..bd5e78a 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -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.
\ No newline at end of file
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
new file mode 100644
index 0000000..9fd7413
--- /dev/null
+++ b/config/locales/zh.yml
@@ -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: 点击重新登陆。
\ No newline at end of file