Skip to content
Snippets Groups Projects
Commit 9b3e2dda authored by jan.bednarik's avatar jan.bednarik
Browse files

Use groups from claims

parent 2bb9cc68
Branches
No related tags found
No related merge requests found
Pipeline #983 passed
...@@ -136,58 +136,43 @@ class RedmineOauthController < AccountController ...@@ -136,58 +136,43 @@ class RedmineOauthController < AccountController
end end
end end
resources = info[settings['field_resources']] group_prefix = "f~"
field_groups = settings['field_groups'].split(",") groups = info['groups']
field_groups.each do |field_group|
field_group = field_group.strip unless groups == nil || groups == []
field_group_spl = field_group.split(":") # Prochází každou skupinou v SSO acces tokenu
field_group = field_group_spl[0] groups.each do |sso_group|
if field_group_spl.length > 1 # možná mají role nějaký prefix
field_group_prefix = field_group_spl[1] sso_group = group_prefix + sso_group
else # Vyhledá mapování skupin na skupiny RM
field_group_prefix = "" mappings = GroupMapping.where(variable: sso_group)
end # Pokud najde, přiřadí uživatele do příslušných skupin
unless mappings.to_a == nil || mappings.to_a == []
groups = resources[field_group] mappings.each do |mapping|
# roles = groups[settings['field_roles']] @group = Group.find(mapping.group_id)
# HARDCODED HACK unless @group.users.include? user
roles = info['groups'] @group.users << user
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
end end
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
end # field_group end
end # groups
rescue rescue
logger.error "Error. Group assignemnt failed." logger.error "Error. Group assignemnt failed."
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment