3 Commits

Author SHA1 Message Date
187a4c47a1 Translate /config/locales/en.yml in nl
translation completed for the source file '/config/locales/en.yml'
on the 'nl' language.
2021-01-08 09:14:07 +00:00
1296d0657f Bump nokogiri from 1.10.10 to 1.11.1 (#2409)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.10 to 1.11.1.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.10...v1.11.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-07 17:59:02 -05:00
3b7b45cc03 Refine OpenID Connect Authentication from #1194 (#1399)
* Adds OpenID Connect.

* Add CSS class for openid_connect omniauth provider

* Add translation (de_DE and en) for openid_connect omniauth provider label

* Make uid_field configurable for openid_connect omniauth provider

* updates to support for openid

* updates to support for openid

* updated ldap gem

* updated sample.env

Co-authored-by: mapidentity <git@mapidentity.com>
Co-authored-by: Jesus Federico <jesus@123it.ca>
Co-authored-by: mapidentity <49822181+mapidentity@users.noreply.github.com>
2021-01-07 15:11:17 -05:00
13 changed files with 139 additions and 111 deletions

View File

@ -50,6 +50,7 @@ gem 'sprockets', '< 4.0.0'
gem 'omniauth' gem 'omniauth'
gem 'omniauth-twitter' gem 'omniauth-twitter'
gem 'omniauth-google-oauth2' gem 'omniauth-google-oauth2'
gem 'omniauth_openid_connect'
gem 'omniauth-bn-launcher', '~> 0.1.3' gem 'omniauth-bn-launcher', '~> 0.1.3'
gem 'net-ldap' gem 'net-ldap'
gem 'bn-ldap-authentication', '~> 0.1.4' gem 'bn-ldap-authentication', '~> 0.1.4'

View File

@ -68,8 +68,10 @@ GEM
tzinfo (~> 1.1) tzinfo (~> 1.1)
addressable (2.7.0) addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0) public_suffix (>= 2.0.2, < 5.0)
aes_key_wrap (1.1.0)
arel (9.0.0) arel (9.0.0)
ast (2.4.0) ast (2.4.0)
attr_required (1.0.1)
autoprefixer-rails (9.7.6) autoprefixer-rails (9.7.6)
execjs execjs
aws-eventstream (1.1.0) aws-eventstream (1.1.0)
@ -89,6 +91,7 @@ GEM
aws-sigv4 (1.2.1) aws-sigv4 (1.2.1)
aws-eventstream (~> 1, >= 1.0.2) aws-eventstream (~> 1, >= 1.0.2)
bcrypt (3.1.13) bcrypt (3.1.13)
bindata (2.4.8)
bindex (0.8.1) bindex (0.8.1)
bn-ldap-authentication (0.1.4) bn-ldap-authentication (0.1.4)
net-ldap (~> 0) net-ldap (~> 0)
@ -191,6 +194,10 @@ GEM
jquery-ui-rails (6.0.1) jquery-ui-rails (6.0.1)
railties (>= 3.2.16) railties (>= 3.2.16)
json (2.3.0) json (2.3.0)
json-jwt (1.13.0)
activesupport (>= 4.2)
aes_key_wrap
bindata
jwt (2.2.1) jwt (2.2.1)
listen (3.0.8) listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4) rb-fsevent (~> 0.9, >= 0.9.4)
@ -211,7 +218,7 @@ GEM
method_source (1.0.0) method_source (1.0.0)
mimemagic (0.3.5) mimemagic (0.3.5)
mini_mime (1.0.2) mini_mime (1.0.2)
mini_portile2 (2.4.0) mini_portile2 (2.5.0)
minitest (5.14.2) minitest (5.14.2)
msgpack (1.3.3) msgpack (1.3.3)
multi_json (1.14.1) multi_json (1.14.1)
@ -219,8 +226,9 @@ GEM
multipart-post (2.1.1) multipart-post (2.1.1)
net-ldap (0.16.2) net-ldap (0.16.2)
nio4r (2.5.4) nio4r (2.5.4)
nokogiri (1.10.10) nokogiri (1.11.1)
mini_portile2 (~> 2.4.0) mini_portile2 (~> 2.5.0)
racc (~> 1.4)
oauth (0.5.4) oauth (0.5.4)
oauth2 (1.4.4) oauth2 (1.4.4)
faraday (>= 0.8, < 2.0) faraday (>= 0.8, < 2.0)
@ -250,6 +258,20 @@ GEM
omniauth-twitter (1.4.0) omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1) omniauth-oauth (~> 1.1)
rack rack
omniauth_openid_connect (0.3.5)
addressable (~> 2.5)
omniauth (~> 1.9)
openid_connect (~> 1.1)
openid_connect (1.2.0)
activemodel
attr_required (>= 1.0.0)
json-jwt (>= 1.5.0)
rack-oauth2 (>= 1.6.1)
swd (>= 1.0.0)
tzinfo
validate_email
validate_url
webfinger (>= 1.0.1)
os (1.1.0) os (1.1.0)
pagy (3.8.1) pagy (3.8.1)
parallel (1.19.1) parallel (1.19.1)
@ -262,7 +284,14 @@ GEM
popper_js (1.16.0) popper_js (1.16.0)
public_suffix (4.0.5) public_suffix (4.0.5)
puma (3.12.6) puma (3.12.6)
racc (1.5.2)
rack (2.2.3) rack (2.2.3)
rack-oauth2 (1.16.0)
activesupport
attr_required
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-test (1.1.0) rack-test (1.1.0)
rack (>= 1.0, < 3) rack (>= 1.0, < 3)
rails (5.2.4.4) rails (5.2.4.4)
@ -376,6 +405,10 @@ GEM
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
sqlite3 (1.3.13) sqlite3 (1.3.13)
swd (1.2.0)
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
sync (0.5.0) sync (0.5.0)
syslog_protocol (0.9.2) syslog_protocol (0.9.2)
term-ansicolor (1.7.1) term-ansicolor (1.7.1)
@ -396,11 +429,20 @@ GEM
uglifier (4.2.0) uglifier (4.2.0)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unicode-display_width (1.7.0) unicode-display_width (1.7.0)
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
validate_url (1.0.13)
activemodel (>= 3.0.0)
public_suffix
web-console (3.7.0) web-console (3.7.0)
actionview (>= 5.0) actionview (>= 5.0)
activemodel (>= 5.0) activemodel (>= 5.0)
bindex (>= 0.4.0) bindex (>= 0.4.0)
railties (>= 5.0) railties (>= 5.0)
webfinger (1.1.0)
activesupport
httpclient (>= 2.4)
webmock (3.8.3) webmock (3.8.3)
addressable (>= 2.3.6) addressable (>= 2.3.6)
crack (>= 0.3.2) crack (>= 0.3.2)
@ -444,6 +486,7 @@ DEPENDENCIES
omniauth-bn-office365 (~> 0.1.1) omniauth-bn-office365 (~> 0.1.1)
omniauth-google-oauth2 omniauth-google-oauth2
omniauth-twitter omniauth-twitter
omniauth_openid_connect
pagy pagy
pg (~> 0.18) pg (~> 0.18)
pluck_to_hash (~> 1.0.2) pluck_to_hash (~> 1.0.2)

View File

@ -7,7 +7,7 @@
Greenlight is a simple front-end interface for your BigBlueButton server. At its heart, Greenlight provides a minimalistic web-based application that allows users to: Greenlight is a simple front-end interface for your BigBlueButton server. At its heart, Greenlight provides a minimalistic web-based application that allows users to:
* Signup/Login with Google, Office365, or through the application itself. * Signup/Login with Google, Office365, OpenID Connect, or through the application itself.
* Manage your account settings and user preferences. * Manage your account settings and user preferences.
* Create and manage your own personal rooms ([BigBlueButton](https://github.com/bigbluebutton/bigbluebutton) sessions). * Create and manage your own personal rooms ([BigBlueButton](https://github.com/bigbluebutton/bigbluebutton) sessions).
* Invite others to your room using a simple URL. * Invite others to your room using a simple URL.
@ -34,4 +34,3 @@ Greenlight is built using Ruby on Rails. Many developers already know Rails well
We invite you to build upon Greenlight and help make it better. See [Contributing to BigBlueButton](http://docs.bigbluebutton.org/support/faq.html#contributing-to-bigbluebutton). We invite you to build upon Greenlight and help make it better. See [Contributing to BigBlueButton](http://docs.bigbluebutton.org/support/faq.html#contributing-to-bigbluebutton).
We invite your feedback, questions, and suggests about Greenlight too. Please post them to the [developer mailing list](https://groups.google.com/forum/#!forum/bigbluebutton-dev). We invite your feedback, questions, and suggests about Greenlight too. Please post them to the [developer mailing list](https://groups.google.com/forum/#!forum/bigbluebutton-dev).

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -155,6 +155,17 @@
} }
} }
.customBtn-openid_connect {
@extend .customBtn;
background: #ef8e1f;
.customBtn-image {
background: #ffffff image-url("openid-logo.png") no-repeat left top;
background-size: 18px 18px;
padding:10px 10px 10px 10px;
}
}
.signin-button { .signin-button {
font-size: 16px; font-size: 16px;
} }

View File

@ -22,7 +22,7 @@ require 'uri'
module ApplicationHelper module ApplicationHelper
# Determines which providers can show a login button in the login modal. # Determines which providers can show a login button in the login modal.
def iconset_providers def iconset_providers
providers = configured_providers & [:google, :twitter, :office365, :ldap] providers = configured_providers & [:google, :twitter, :office365, :openid_connect, :ldap]
providers.delete(:twitter) if session[:old_twitter_user_id] providers.delete(:twitter) if session[:old_twitter_user_id]

View File

@ -16,6 +16,9 @@ Rails.application.config.omniauth_twitter = ENV['TWITTER_ID'].present? && ENV['T
Rails.application.config.omniauth_google = ENV['GOOGLE_OAUTH2_ID'].present? && ENV['GOOGLE_OAUTH2_SECRET'].present? Rails.application.config.omniauth_google = ENV['GOOGLE_OAUTH2_ID'].present? && ENV['GOOGLE_OAUTH2_SECRET'].present?
Rails.application.config.omniauth_office365 = ENV['OFFICE365_KEY'].present? && Rails.application.config.omniauth_office365 = ENV['OFFICE365_KEY'].present? &&
ENV['OFFICE365_SECRET'].present? ENV['OFFICE365_SECRET'].present?
Rails.application.config.omniauth_openid_connect = ENV['OPENID_CONNECT_CLIENT_ID'].present? &&
ENV['OPENID_CONNECT_CLIENT_SECRET'].present? &&
ENV['OPENID_CONNECT_ISSUER'].present?
SETUP_PROC = lambda do |env| SETUP_PROC = lambda do |env|
OmniauthOptions.omniauth_options env OmniauthOptions.omniauth_options env
@ -56,8 +59,44 @@ Rails.application.config.middleware.use OmniAuth::Builder do
redirect = ENV['OAUTH2_REDIRECT'].present? ? File.join(ENV['OAUTH2_REDIRECT'], "auth", "office365", "callback") : nil redirect = ENV['OAUTH2_REDIRECT'].present? ? File.join(ENV['OAUTH2_REDIRECT'], "auth", "office365", "callback") : nil
provider :office365, ENV['OFFICE365_KEY'], ENV['OFFICE365_SECRET'], provider :office365, ENV['OFFICE365_KEY'], ENV['OFFICE365_SECRET'],
redirect_uri: redirect, redirect_uri: redirect,
setup: SETUP_PROC setup: SETUP_PROC
end
if Rails.configuration.omniauth_openid_connect
Rails.application.config.providers << :openid_connect
redirect = ENV['OAUTH2_REDIRECT'].present? ? File.join(ENV['OAUTH2_REDIRECT'], "auth", "openid_connect", "callback") : nil
provider :openid_connect,
issuer: ENV["OPENID_CONNECT_ISSUER"],
discovery: true,
scope: [:email, :profile],
response_type: :code,
uid_field: ENV["OPENID_CONNECT_UID_FIELD"] || "preferred_username",
client_options: {
identifier: ENV['OPENID_CONNECT_CLIENT_ID'],
secret: ENV['OPENID_CONNECT_CLIENT_SECRET'],
redirect_uri: redirect
},
setup: SETUP_PROC
end
if Rails.configuration.omniauth_openid_connect
Rails.application.config.providers << :openid_connect
redirect = ENV['OAUTH2_REDIRECT'].present? ? File.join(ENV['OAUTH2_REDIRECT'], "auth", "openid_connect", "callback") : nil
provider :openid_connect,
issuer: ENV["OPENID_CONNECT_ISSUER"],
discovery: true,
scope: [:email, :profile],
response_type: :code,
uid_field: ENV["OPENID_CONNECT_UID_FIELD"] || "preferred_username",
client_options: {
identifier: ENV['OPENID_CONNECT_CLIENT_ID'],
secret: ENV['OPENID_CONNECT_CLIENT_SECRET'],
redirect_uri: redirect
},
setup: SETUP_PROC
end end
end end
end end

View File

@ -36,25 +36,12 @@ ar:
enabled: مفعل enabled: مفعل
info: السماح للمستخدمين المصادق عليهم فقط بالانضمام إلى غرفة info: السماح للمستخدمين المصادق عليهم فقط بالانضمام إلى غرفة
title: طلب مصادقة للغرف title: طلب مصادقة للغرف
user-info: يجب عليك تسجيل الدخول أعلاه للانضمام إلى هذه الغرفة. user-info: يجب تسجيل الدخول للانضمام إلى هذه الغرفة
branding: branding:
change: تغيير الصورة change: تغيير الصورة
info: تغيير صورة العلامة التجارية التي تظهر في الزاوية العلوية اليمنى info: تغيير صورة العلامة التجارية التي تظهر في الزاوية العلوية اليمنى
placeholder: رابط الصورة... placeholder: رابط الصورة...
title: صورة العلامة التجارية title: صورة العلامة التجارية
invalid: URL غير صالح
legal:
change: تغيير URL
info: قم بتغيير رابط الشروط الذي يظهر في أسفل الصفحة
placeholder: عنوان URL الشروط ...
title: الشروط
invalid: URL غير صالح
privpolicy:
change: تغيير URL
info: غيّر رابط سياسة الخصوصية الذي يظهر أسفل الصفحة
placeholder: URL سياسة الخصوصية...
title: سياسة الخصوصية
invalid: URL غير صالح
cache: cache:
info: مسح ذاكرة التخزين المؤقت الخاصة بالمزود الذي يؤدي إلى طلب جديد للمعلومات المحدثة info: مسح ذاكرة التخزين المؤقت الخاصة بالمزود الذي يؤدي إلى طلب جديد للمعلومات المحدثة
title: مسح ذاكرة التخزين المؤقت لمزود الخدمة title: مسح ذاكرة التخزين المؤقت لمزود الخدمة
@ -69,10 +56,6 @@ ar:
regular: الأساسي regular: الأساسي
lighten: الفاتح lighten: الفاتح
darken: معتم darken: معتم
email_mapping:
info: تعيين دور المستخدم باستعمال بريده الإلكتروني. يجب أن يكون بالتنسيق email1 = role1 ، email2 = role2
title: تعيين الدور بالبريد الإلكتروني
update:
log_level: log_level:
title: مستوى السجل title: مستوى السجل
information: تغيير مستوى السجل للنشر بأكمله information: تغيير مستوى السجل للنشر بأكمله
@ -86,18 +69,6 @@ ar:
info: ضبط الظهور الافتراضي للتسجيلات الجديدة info: ضبط الظهور الافتراضي للتسجيلات الجديدة
title: تسجيل الظهور الافتراضي title: تسجيل الظهور الافتراضي
warning: سيتم تطبيق هذه الإعدادات فقط على الغرف التي لا تعمل حاليا warning: سيتم تطبيق هذه الإعدادات فقط على الغرف التي لا تعمل حاليا
require_consent:
info: يتيح هذا الإعداد إعداد الغرفة الذي يسمح لمالكي الغرفة بتحديد الغرف التي يمكن تسجيلها. يجب على المستخدمين الذين ينضمون إلى غرفة مسجلة الموافقة قبل الانضمام.
title: تتطلب موافقة مالك الغرفة والمنضم على التسجيل
maintenance_banner:
info: يعرض لافتة لإعلام المستخدم بالصيانة المجدولة
title: لافتة الصيانة
display: ضبط
clear: مسح
time: "مثال: التحديث مجدول في 13 ديسمبر @ 23:00 بالتوقيت الشرقي. قد يواجه المستخدمون مشاكل في تسجيل الدخول."
preupload:
info: يمكن للمستخدمين تحميل عرض تقديمي مسبق لاستخدامه كعرض تقديمي افتراضي لتلك الغرفة المحددة
title: السماح للمستخدمين بتحميل العروض التقديمية مسبقًا
registration: registration:
info: تغيير طريقة تسجيل المستخدمين على الموقع info: تغيير طريقة تسجيل المستخدمين على الموقع
title: طريقة التسجيل title: طريقة التسجيل
@ -112,11 +83,6 @@ ar:
info: سيؤدي التعطيل إلى إزالة الأيقونة من القائمة المنسدلة لخيارات الغرفة، وبذلك لن يتمكن المستخدمون من مشاركة الغرف info: سيؤدي التعطيل إلى إزالة الأيقونة من القائمة المنسدلة لخيارات الغرفة، وبذلك لن يتمكن المستخدمون من مشاركة الغرف
title: السماح للمستخدمين بمشاركة الغرف title: السماح للمستخدمين بمشاركة الغرف
subtitle: تخصيص Greenlight subtitle: تخصيص Greenlight
tabs:
appearance: المظهر
administration: الادارة
registration: التسجيل
settings: إعدادات
title: إعدادات الموقع title: إعدادات الموقع
flash: flash:
approved: تمت الموافقة على المستخدم بنجاح. approved: تمت الموافقة على المستخدم بنجاح.
@ -134,7 +100,6 @@ ar:
registration_method_updated: تم تحديث طريقة التسجيل بنجاح registration_method_updated: تم تحديث طريقة التسجيل بنجاح
reset_password: تم إرسال بريد الكتروني للمستخدم لإعادة ضبط كلمة المرور الخاصة به (نأمل مراجعة مجلد البريد المزعج في حال عدم وصوله إلى صندوق الوارد) reset_password: تم إرسال بريد الكتروني للمستخدم لإعادة ضبط كلمة المرور الخاصة به (نأمل مراجعة مجلد البريد المزعج في حال عدم وصوله إلى صندوق الوارد)
restored: تمت استعادة المستخدم بنجاح restored: تمت استعادة المستخدم بنجاح
room_configuration: تم تغيير إعدادات الغرفة بنجاح
settings: تم تغيير إعدادات الموقع بنجاح settings: تم تغيير إعدادات الموقع بنجاح
unauthorized: غير مصرح لك بتنفيذ إجراءات على هذا المستخدم unauthorized: غير مصرح لك بتنفيذ إجراءات على هذا المستخدم
recordings: recordings:
@ -161,32 +126,12 @@ ar:
colour: colour:
title: لون الدور title: لون الدور
info: تعيين اللون الذي سيرتبط بالدور info: تعيين اللون الذي سيرتبط بالدور
room_configuration:
title: إعدادات الغرفة
mute:
info: كتم صوت المستخدم تلقائيًا عند انضمامه إلى اجتماع BigBlueButton
require_moderator:
info: ينبه مشرف اجتماع BigBlueButton عندما يحاول المستخدم الانضمام. إذا تمت الموافقة على المستخدم ، فسيتمكن من الانضمام إلى الاجتماع.
allow_any:
info: يسمح لأي مستخدم ببدء الاجتماع في أي وقت. بشكل افتراضي ، يمكن لمالك الغرفة فقط بدء الاجتماع.
all_moderator:
info: يمنح جميع المستخدمين امتيازات المشرف في BigBlueButton عند انضمامهم إلى الاجتماع.
recordings:
info: يسمح لمالكي الغرفة بتحديد ما إذا كانوا يريدون خيار تسجيل غرفة أم لا. في حالة التمكين ، لا يزال يتعين على المشرف النقر على الزر "تسجيل" بمجرد بدء الاجتماع.
options:
disabled: معطل
enabled: ممكّن دائمًا
optional: اختياري
rooms: rooms:
timeout: "نظرًا لانتهاء مهلة طلب الخادم %{server} ، فقد لا تكون معلومات الحالة والمشاركين دقيقة"
title: غرف الخادم title: غرف الخادم
table: table:
ended: "انتهت: %{session}"
id: المعرف id: المعرف
not_running: لا يعمل not_running: لا يعمل
participants: المشاركون
running: يعمل running: يعمل
started: "بدأت: %{session}"
status: حالة status: حالة
view: عرض view: عرض
title: إعدادات المؤسسة title: إعدادات المؤسسة
@ -201,21 +146,18 @@ ar:
delete: حذف delete: حذف
edit: تحرير edit: تحرير
edit_roles: تعديل أدوار المستخدم edit_roles: تعديل أدوار المستخدم
merge: دمج
perm_delete: حذف بشكل دائم perm_delete: حذف بشكل دائم
unban: إلغاء حظر المستخدم unban: إلغاء حظر المستخدم
undelete: تراجع عن الحذف undelete: تراجع عن الحذف
table: table:
authenticator: المصادق authenticator: المصادق
created: انشاء created: انشاء
time: وقت الإرسال
name: الاسم name: الاسم
not_found: لا يوجد مستخدم يطابق بحثك not_found: لا يوجد مستخدم يطابق بحثك
no_users: لم يتم العثور على أي مستخدمين no_users: لم يتم العثور على أي مستخدمين
role: الدور role: الدور
uid: معرف المستخدم uid: معرف المستخدم
username: اسم المستخدم username: اسم المستخدم
valid: صالح
title: إدارة المستخدمين title: إدارة المستخدمين
add_to_google_calendar: "إضافة إلى تقويم Google" add_to_google_calendar: "إضافة إلى تقويم Google"
bigbluebutton: BigBlueButton bigbluebutton: BigBlueButton
@ -286,8 +228,6 @@ ar:
designs: تصاميم مخصصة designs: تصاميم مخصصة
authentication: مصادقة المستخدم authentication: مصادقة المستخدم
footer: footer:
legal: الشروط
privpolicy: سياسة الخصوصية
powered_by: "مشغل بواسطة%{href}." powered_by: "مشغل بواسطة%{href}."
forgot_password: forgot_password:
subtitle: هل نسيت كلمة المرور subtitle: هل نسيت كلمة المرور
@ -377,6 +317,8 @@ ar:
verify_text: 'للتحقق من حسابك ، اتبع هذا الرابط بالنقر عليه: %{url}' verify_text: 'للتحقق من حسابك ، اتبع هذا الرابط بالنقر عليه: %{url}'
verify_link: التحقق من الحساب verify_link: التحقق من الحساب
thanks: شكرا لانضمامك ونتمنى لك يوماً موفقاً. thanks: شكرا لانضمامك ونتمنى لك يوماً موفقاً.
maintenance:
window_alert: "نافذة الصيانة المجدولة لـ %{date}"
max_concurrent: وصلت إلى الحد الأقصى لعدد الجلسات المتزامنة المسموح بها! max_concurrent: وصلت إلى الحد الأقصى لعدد الجلسات المتزامنة المسموح بها!
merged: المدمجة merged: المدمجة
modal: modal:
@ -401,10 +343,6 @@ ar:
keep: في الواقع ، سأحافظ عليه. keep: في الواقع ، سأحافظ عليه.
delete_warning: سيؤدي ذلك إلى إلغاء تنشيط حساب المستخدم. يمكن العثور على جميع المستخدمين غير النشطين تحت علامة تبويب المحذوفات. delete_warning: سيؤدي ذلك إلى إلغاء تنشيط حساب المستخدم. يمكن العثور على جميع المستخدمين غير النشطين تحت علامة تبويب المحذوفات.
warning: هذا القرار نهائي.<b>لن</b> تكون قادرًا على استعادة البيانات المرتبطة. warning: هذا القرار نهائي.<b>لن</b> تكون قادرًا على استعادة البيانات المرتبطة.
delete_rec:
delete: أنا متأكد ، احذف هذا التسجيل.
header: هل أنت متأكد أنك تريد حذف هذا التسجيل؟
warning: <b>لن</b> تتمكن من استعادة هذا التسجيل
delete_room: delete_room:
confirm: "هل أنت متأكد أنك تريد حذف %{room}؟" confirm: "هل أنت متأكد أنك تريد حذف %{room}؟"
delete: أنا متأكد قم بحذف هذه الغرفة. delete: أنا متأكد قم بحذف هذه الغرفة.
@ -412,7 +350,7 @@ ar:
warning: <b>لن</b> تكون قادراً على استعادة هذه الغرفة warning: <b>لن</b> تكون قادراً على استعادة هذه الغرفة
recording_warning: "أو أي من التسجيلات المرتبطة بـ %{recordings_num} الخاصة به." recording_warning: "أو أي من التسجيلات المرتبطة بـ %{recordings_num} الخاصة به."
invite_user: invite_user:
email_placeholder: أدخل عناوين البريد الإلكتروني للمستخدمين (مفصولة بالفارزة) email_placeholder: أدخل عناوين البريد لالكتروني للمستخدمين (استخدم الفاصلة للفصل بينها)
footer: سوف يتلقى المستخدم رسالة بريد إلكتروني مع تعليمات حول كيفية الاشتراك footer: سوف يتلقى المستخدم رسالة بريد إلكتروني مع تعليمات حول كيفية الاشتراك
send: إرسال دعوة send: إرسال دعوة
title: دعوة المستخدم title: دعوة المستخدم
@ -420,14 +358,6 @@ ar:
or: أو or: أو
with: "الدخول بـ %{provider}" with: "الدخول بـ %{provider}"
forgot_password: هل نسيت كلمة المرور؟ forgot_password: هل نسيت كلمة المرور؟
preupload:
change: استبدال العرض التقديمي
choose: اختر ملف...
current: "العرض التقديمي الحالي:"
footer: اعتمادًا على حجم العرض التقديمي ، قد يتطلب تحميله وقتًا إضافيًا قبل استخدامه.
invalid: حجم / نوع الملف غير صالح. يرجى الاطلاع على القيود أدناه.
title: أضف العرض التقديمي
use: استخدم العرض التقديمي
rename_recording: rename_recording:
remove_shared: remove_shared:
title: هل أنت متأكد من رغبتك في إزالة هذه الغرفة من قائمة الغرف الخاصة بك؟ title: هل أنت متأكد من رغبتك في إزالة هذه الغرفة من قائمة الغرف الخاصة بك؟
@ -442,7 +372,6 @@ ar:
require_approval: يلزم موافقة المشرف قبل الانضمام require_approval: يلزم موافقة المشرف قبل الانضمام
start: السماح لأي مستخدم ببدء اللقاء start: السماح لأي مستخدم ببدء اللقاء
footer_text: يمكن إجراء التعديل على غرفتك في أي وقت. footer_text: يمكن إجراء التعديل على غرفتك في أي وقت.
recording: السماح بتسجيل الغرفة
rename_room: rename_room:
name_placeholder: أدخل اسم غرفة جديدة ... name_placeholder: أدخل اسم غرفة جديدة ...
share_access: share_access:
@ -522,7 +451,6 @@ ar:
remove: إزالة remove: إزالة
rename: إعادة تسمية rename: إعادة تسمية
reset_password: reset_password:
invalid_token: رمز إعادة تعيين كلمة المرور غير صالح. يرجى محاولة إعادة تعيين كلمة المرور الخاصة بك مرة أخرى.
subtitle: إعادة تعيين كلمة المرور subtitle: إعادة تعيين كلمة المرور
password: كلمة المرور الجديدة password: كلمة المرور الجديدة
confirm: تأكيد كلمة المرور الجديدة confirm: تأكيد كلمة المرور الجديدة
@ -537,8 +465,6 @@ ar:
user: مستخدم user: مستخدم
room: room:
access_code_required: الرجاء إدخال رمز وصول ساري المفعول للانضمام إلى الغرفة access_code_required: الرجاء إدخال رمز وصول ساري المفعول للانضمام إلى الغرفة
add_presentation: أضف العرض التقديمي
copy_access: نسخ رمز الوصول
create_room: إنشاء غرفة create_room: إنشاء غرفة
create_room_error: حدث خطأ أثناء إنشاء الغرفة create_room_error: حدث خطأ أثناء إنشاء الغرفة
create_room_success: تم إنشاء الغرفة بنجاح create_room_success: تم إنشاء الغرفة بنجاح
@ -548,9 +474,7 @@ ar:
fail: "فشل في حذف الغرفة (%{error})" fail: "فشل في حذف الغرفة (%{error})"
enter_the_access_code: أدخل رمز الوصول لهذه الغرفة enter_the_access_code: أدخل رمز الوصول لهذه الغرفة
invalid_provider: لقد أدخلت رابطًا غير صالح. يرجى التحقق من عنوان URL والمحاولة مرة أخرى. invalid_provider: لقد أدخلت رابطًا غير صالح. يرجى التحقق من عنوان URL والمحاولة مرة أخرى.
invitation_description: "لقد تمت دعوتك للانضمام إلى %{name} باستخدام BigBlueButton. للانضمام ، انقر فوق الارتباط أعلاه وأدخل اسمك."
invited: لقد تمت دعوتك للانضمام invited: لقد تمت دعوتك للانضمام
recording_present: أقر بأنه سيتم تسجيل هذه الجلسة. قد يشمل ذلك صوتي وفيديو إذا تم تمكينه.
invite_participants: دعوة المشاركين invite_participants: دعوة المشاركين
join: انضم join: انضم
last_session: "الجلسة الأخيرة في %{session}" last_session: "الجلسة الأخيرة في %{session}"
@ -567,10 +491,6 @@ ar:
recent_rooms: الانتقال إلى الغرفة التي تم الانضمام إليها مؤخرًا recent_rooms: الانتقال إلى الغرفة التي تم الانضمام إليها مؤخرًا
title: الانضمام إلى الغرفة title: الانضمام إلى الغرفة
no_sessions: ما زالت هذه الغرفة لا تحتوي على جلسات. no_sessions: ما زالت هذه الغرفة لا تحتوي على جلسات.
preupload_success: تمت إضافة العرض بنجاح
preupload_error: حدث خطأ أثناء تحديث عرض الغرفة
preupload_remove_success: تمت إزالة العرض التقديمي بنجاح
preupload_remove_error: حدث خطأ أثناء إزالة عرض الغرفة
recordings: التسجيلات الخاصة بالغرفة recordings: التسجيلات الخاصة بالغرفة
room_limit: وصلت إلى الحد الأقصى لعدد الغرف المسموح بها room_limit: وصلت إلى الحد الأقصى لعدد الغرف المسموح بها
room_limit_exceeded: "لقد تجاوزت عدد الغرف المسموح بها. يرجى حذف %{difference} غرفة للدخول إلى هذه الغرفة." room_limit_exceeded: "لقد تجاوزت عدد الغرف المسموح بها. يرجى حذف %{difference} غرفة للدخول إلى هذه الغرفة."
@ -583,7 +503,6 @@ ar:
shared_access_success: تمت مشاركة الغرفة بنجاح shared_access_success: تمت مشاركة الغرفة بنجاح
shared_access_error: هناك خطأ في مشاركة الغرفة shared_access_error: هناك خطأ في مشاركة الغرفة
start: بداية start: بداية
search: البحث عن غرفة ...
unavailable: هذه الغرفة غير متاح حاليًا نظرًا لعدم التحقق من البريد الإلكتروني للمالك. unavailable: هذه الغرفة غير متاح حاليًا نظرًا لعدم التحقق من البريد الإلكتروني للمالك.
update_settings_error: حدث خطأ أثناء تحديث إعدادات الغرفة update_settings_error: حدث خطأ أثناء تحديث إعدادات الغرفة
update_settings_success: تم تحديث إعدادات الغرفة بنجاح update_settings_success: تم تحديث إعدادات الغرفة بنجاح
@ -592,15 +511,14 @@ ar:
auto: ستنضم تلقائيًا عندما يبدأ الاجتماع. auto: ستنضم تلقائيًا عندما يبدأ الاجتماع.
settings: settings:
account: account:
fullname: الاسم الكامل fullname: الاسم كاملاً
language: لغة language: لغة
provider: مزود provider: مزود
image: صورة image: صورة
image_url: عنوان URL لصورة الملف الشخصي image_url: عنوان URL لصورة الملف الشخصي
roles: دور المستخدم roles: أدوار المستخدم
subtitle: قم بتحديث معلومات حسابك subtitle: قم بتحديث معلومات حسابك
title: معلومات الحساب title: معلومات الحساب
reset_password: إعادة تعيين كلمة مرور المستخدم
delete: delete:
button: نعم ، أرغب في حذف حسابي. button: نعم ، أرغب في حذف حسابي.
disclaimer: إذا اخترت حذف حسابك . <b>لا</b> يمكن استرداده. ستتم إزالة جميع المعلومات المتعلقة بحسابك ، بما في ذلك الإعدادات والغرف والتسجيل. disclaimer: إذا اخترت حذف حسابك . <b>لا</b> يمكن استرداده. ستتم إزالة جميع المعلومات المتعلقة بحسابك ، بما في ذلك الإعدادات والغرف والتسجيل.

View File

@ -477,6 +477,7 @@ de_DE:
office365: Office 365 office365: Office 365
twitter: Twitter twitter: Twitter
ldap: LDAP ldap: LDAP
openid_connect: OpenID Connect
recaptcha: recaptcha:
errors: errors:
recaptcha_unreachable: "Ups, es war nicht möglich die reCAPTCHA Antwort zu überprüfen. Bitte versuchen Sie es nochmals." recaptcha_unreachable: "Ups, es war nicht möglich die reCAPTCHA Antwort zu überprüfen. Bitte versuchen Sie es nochmals."

View File

@ -478,6 +478,7 @@ en:
office365: Office 365 office365: Office 365
twitter: Twitter twitter: Twitter
ldap: LDAP ldap: LDAP
openid_connect: OpenID Connect
recaptcha: recaptcha:
errors: errors:
recaptcha_unreachable: Oops, we failed to validate your reCAPTCHA response. Please try again. recaptcha_unreachable: Oops, we failed to validate your reCAPTCHA response. Please try again.

View File

@ -477,6 +477,7 @@ nl:
office365: Office 365 office365: Office 365
twitter: Twitter twitter: Twitter
ldap: LDAP ldap: LDAP
openid_connect: OpenID Connect
recaptcha: recaptcha:
errors: errors:
recaptcha_unreachable: "Oeps, we hebben uw reCAPTCHA-antwoord niet kunnen valideren. Probeer het opnieuw." recaptcha_unreachable: "Oeps, we hebben uw reCAPTCHA-antwoord niet kunnen valideren. Probeer het opnieuw."

View File

@ -37,6 +37,8 @@ module OmniauthOptions
set_hd(env, ENV['GOOGLE_OAUTH2_HD']) set_hd(env, ENV['GOOGLE_OAUTH2_HD'])
elsif env['omniauth.strategy'].options[:name] == "office365" elsif env['omniauth.strategy'].options[:name] == "office365"
set_hd(env, ENV['OFFICE365_HD']) set_hd(env, ENV['OFFICE365_HD'])
elsif env['omniauth.strategy'].options[:name] == "openid_connect"
set_hd(env, ENV['OPENID_CONNECT_HD'])
end end
end end

View File

@ -51,6 +51,18 @@ OFFICE365_KEY=
OFFICE365_SECRET= OFFICE365_SECRET=
OFFICE365_HD= OFFICE365_HD=
# OpenID Connect Provider (optional)
#
# For in-depth steps on setting up a OpenID Connect Login Provider, see:
#
# https://docs.bigbluebutton.org/greenlight/gl-config.html#openid-connect
#
OPENID_CONNECT_CLIENT_ID=
OPENID_CONNECT_CLIENT_SECRET=
OPENID_CONNECT_ISSUER=
OPENID_CONNECT_HD=
OPENID_CONNECT_UID_FIELD=
# OAUTH2_REDIRECT allows you to specify the redirect_url passed to oauth on sign in. # OAUTH2_REDIRECT allows you to specify the redirect_url passed to oauth on sign in.
# It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy # It is useful for cases when Greenlight is deployed behind a Network Load Balancer or proxy
OAUTH2_REDIRECT= OAUTH2_REDIRECT=