diff --git a/plugins/redmine_omniauth_client/app/controllers/redmine_oauth_controller.rb b/plugins/redmine_omniauth_client/app/controllers/redmine_oauth_controller.rb index 0084abb1489f2ec98c50a458bc7bad30edd19222..849c06ce94125809044382d3df0d796b4e263a17 100644 --- a/plugins/redmine_omniauth_client/app/controllers/redmine_oauth_controller.rb +++ b/plugins/redmine_omniauth_client/app/controllers/redmine_oauth_controller.rb @@ -136,58 +136,43 @@ class RedmineOauthController < AccountController end end - resources = info[settings['field_resources']] - field_groups = settings['field_groups'].split(",") - field_groups.each do |field_group| - field_group = field_group.strip - field_group_spl = field_group.split(":") - field_group = field_group_spl[0] - if field_group_spl.length > 1 - field_group_prefix = field_group_spl[1] - else - field_group_prefix = "" - end - - groups = resources[field_group] -# roles = groups[settings['field_roles']] -# HARDCODED HACK - roles = info['groups'] - - unless roles == nil || roles == [] - # Prochází každou rolí v SSO acces tokenu - roles.each do |sso_group| - # možná mají role nějaký prefix - sso_group = field_group_prefix + sso_group - # Vyhledá mapování skupin na skupiny RM - mappings = GroupMapping.where(variable: sso_group) - # Pokud najde, přiřadí uživatele do příslušných skupin - unless mappings.to_a == nil || mappings.to_a == [] - mappings.each do |mapping| - @group = Group.find(mapping.group_id) - unless @group.users.include? user - @group.users << user - end - end - # Pokud nenajde, hledá skupinu přímo odpovídající jménem skupině v SSO - else - @group = Group.find_by(lastname: sso_group) - # Pokud nenajde, vytvoří skupinu - if @group == nil || @group == [] - @group = Group.new({:lastname => sso_group}) - #@group.name= sso_group - @group.save - end - # Vytváří mapování na novou, či nemapovanou skupinu a přiřadí uživatele do skupiny - #File.open("mapping_" + sso_group + ".txt", 'w') { |file| file.write(@group) } - unless @group.users.include? user - @group.users << user - end - new_mapping = GroupMapping.new({:variable => sso_group, :group_id => @group.get_id}) - new_mapping.save + group_prefix = "f~" + groups = info['groups'] + + unless groups == nil || groups == [] + # Prochází každou skupinou v SSO acces tokenu + groups.each do |sso_group| + # možná mají role nějaký prefix + sso_group = group_prefix + sso_group + # Vyhledá mapování skupin na skupiny RM + mappings = GroupMapping.where(variable: sso_group) + # Pokud najde, přiřadí uživatele do příslušných skupin + unless mappings.to_a == nil || mappings.to_a == [] + mappings.each do |mapping| + @group = Group.find(mapping.group_id) + unless @group.users.include? user + @group.users << user end end + # Pokud nenajde, hledá skupinu přímo odpovídající jménem skupině v SSO + else + @group = Group.find_by(lastname: sso_group) + # Pokud nenajde, vytvoří skupinu + if @group == nil || @group == [] + @group = Group.new({:lastname => sso_group}) + #@group.name= sso_group + @group.save + end + # Vytváří mapování na novou, či nemapovanou skupinu a přiřadí uživatele do skupiny + #File.open("mapping_" + sso_group + ".txt", 'w') { |file| file.write(@group) } + unless @group.users.include? user + @group.users << user + end + new_mapping = GroupMapping.new({:variable => sso_group, :group_id => @group.get_id}) + new_mapping.save end - end # field_group + end + end # groups rescue logger.error "Error. Group assignemnt failed." end