From f6097dd9d4d64fcd8c40615c80b75058062a22cc Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Mon, 19 Aug 2019 16:18:32 +0800 Subject: [PATCH 1/6] fix dependency issue --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 2eb3f45..1ef1c3a 100644 --- a/Gemfile +++ b/Gemfile @@ -1 +1 @@ -gem 'httparty', '~> 0.13.7' +gem 'httparty' From f1430f8e1c264aba8bcea1a2333c873a68e9010f Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Wed, 21 Aug 2019 14:37:54 +0800 Subject: [PATCH 2/6] Add Chinese Language Support --- config/locales/zh.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 config/locales/zh.yml diff --git a/config/locales/zh.yml b/config/locales/zh.yml new file mode 100644 index 0000000..52ea006 --- /dev/null +++ b/config/locales/zh.yml @@ -0,0 +1,12 @@ +# Chinese strings go here for Rails i18n +en: + 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天) From b67d1c078d3ad24e4b497ac5021aee632a8a6791 Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Wed, 28 Aug 2019 10:39:41 +0800 Subject: [PATCH 3/6] Fix null method error when no role mappings set --- app/models/oic_session.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/models/oic_session.rb b/app/models/oic_session.rb index 045a123..6e374a9 100644 --- a/app/models/oic_session.rb +++ b/app/models/oic_session.rb @@ -133,9 +133,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 From 43dad3f8f15738bc65e1727d9eebacdcee338067 Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Wed, 28 Aug 2019 11:04:29 +0800 Subject: [PATCH 4/6] fix chinese support typo --- config/locales/zh.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/zh.yml b/config/locales/zh.yml index 52ea006..da861eb 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1,5 +1,5 @@ # Chinese strings go here for Rails i18n -en: +zh: config: enabled: 启用 header: OpenID 连接配置 From 3fa8b35e9c976383a716157489a00b09ccd2ee66 Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Wed, 28 Aug 2019 11:15:39 +0800 Subject: [PATCH 5/6] Add Internationalization for logout page. --- app/views/account/oic_local_logout.html.erb | 2 +- config/locales/en.yml | 3 +++ config/locales/zh.yml | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) 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 index da861eb..9fd7413 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -10,3 +10,6 @@ zh: group: 授权组 名称(如果所有用户都被授权,则留空) admin_group: 管理员组 名称(该组的成员将被视为Redmine管理员) dynamic_config_expiry: 从服务器拉取配置的时间周期 (单位:秒;默认1天) + local_logout: + logout_message: 您的账户已注销, + relogin_message: 点击重新登陆。 \ No newline at end of file From 083ca149d866c1a75b61f51d7146ed3dd79f70af Mon Sep 17 00:00:00 2001 From: Wang Jiaxiang Date: Fri, 6 Sep 2019 13:55:27 +0800 Subject: [PATCH 6/6] Fix base64 decoding issus --- app/models/oic_session.rb | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/oic_session.rb b/app/models/oic_session.rb index 6e374a9..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 @@ -144,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 @@ -218,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(' ')