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

Use groups from claims

parent 2bb9cc68
No related branches found
No related tags found
No related merge requests found
Pipeline #983 passed
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment