Skip to content
Snippets Groups Projects
Select Git revision
  • 0e558653360ffe384cd1e3c2c5e7e9e0f5e1a1bc
  • master default protected
  • v3-modify-mail
  • snyk-fix-207483a1e839c807f95a55077e86527d
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_ru
  • translations_6e4a5e377a3e50f17e6402264fdbfcc6_ru
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_fa_IR
  • translations_en-yml--master_fa_IR
  • snyk-fix-7d634f2eb65555f41bf06d6af930e812
  • translations_en-yml--master_ar
  • translations_3b5aa4f3c755059914cfa23d7d2edcde_el
  • jfederico-patch-1
  • v2
  • v3
  • v1
  • release-3.1.0.2
  • release-3.1.0.1
  • release-3.1.0
  • release-2.14.8.4
  • release-3.0.9.1
  • release-3.0.9
  • release-3.0.8.1
  • release-2.14.8.3
  • release-3.0.8
  • release-3.0.7.1
  • release-2.14.8.2
  • release-3.0.7
  • release-3.0.6.1
  • release-3.0.6
  • release-3.0.5.4
  • release-3.0.5.3
  • release-2.14.8.1
  • release-3.0.5.2
  • release-3.0.5.1
  • release-3.0.5
35 results

user_creator.rb

Blame
  • user avatar
    Samuel Couillard authored and GitHub committed
    * Add license to controllers
    
    * Add license to rest of Ruby files
    
    * Add db files
    
    * Add license to specs
    
    * Add javascript
    733afa52
    History
    user_creator.rb 1.58 KiB
    # BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
    #
    # Copyright (c) 2022 BigBlueButton Inc. and by respective authors (see below).
    #
    # This program is free software; you can redistribute it and/or modify it under the
    # terms of the GNU Lesser General Public License as published by the Free Software
    # Foundation; either version 3.0 of the License, or (at your option) any later
    # version.
    #
    # Greenlight is distributed in the hope that it will be useful, but WITHOUT ANY
    # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
    # PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    #
    # You should have received a copy of the GNU Lesser General Public License along
    # with Greenlight; if not, see <http://www.gnu.org/licenses/>.
    
    # frozen_string_literal: true
    
    class UserCreator
      def initialize(user_params:, provider:, role:)
        @user_params = user_params
        @provider = provider
        @role = role
        @roles_mappers = SettingGetter.new(setting_name: 'RoleMapping', provider:).call
      end
    
      def call
        email_role = infer_role_from_email(@user_params[:email])
    
        User.new({
          provider: @provider,
          role: email_role || @role
        }.merge(@user_params))
      end
    
      private
    
      def infer_role_from_email(email)
        matched_rule = if @roles_mappers
                         rules = @roles_mappers.split(',').map { |rule| rule.split('=') }
    
                         rules.find { |rule| email.ends_with? rule.second if rule.second }
                       end
    
        Role.find_by(name: matched_rule&.first, provider: @provider)
      end
    end