Sha256: 84fe234424137d8ba97d0091323be6d2f29db4078c774189d08af301e96336fd
Contents?: true
Size: 1.97 KB
Versions: 2
Compression:
Stored size: 1.97 KB
Contents
# frozen_string_literal: true module Decidim module Mpassid module Verification class MetadataCollector def initialize(saml_attributes) @saml_attributes = saml_attributes end def metadata { # Straight forward fetching of the "single" value attributes first_name: saml_attributes[:first_names] || saml_attributes[:given_name], given_name: saml_attributes[:given_name], last_name: saml_attributes[:last_name] }.tap do |data| # Map the SAML attribute keys to specific metadata attribute keys. { municipality: :municipality_code, municipality_name: :municipality_name, school_code: :school_code, school_name: :school_name, student_class: :class, student_class_level: :class_level }.each do |key, saml_key| # For all the "multi" value attributes, join the values with a # comma. val = saml_attributes[saml_key] val = val.join(",") if val data[key] = val end full_role = saml_attributes[:role] if full_role data[:role] = full_role.map do |role_string| # The fole string consists of four parts with the following # indexes: # - 0: Municipality name (same as `:municipality_name`) # - 1: School code (same as `:school_code`) # - 2: Group (same as `:class`) # - 3: User's role in the group role_parts = role_string.split(";") role_parts[3] if role_parts.length > 3 end.join(",") # Do not store anything in case no roles were found data[:role] = nil if data[:role].empty? end end end protected attr_reader :saml_attributes end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
decidim-mpassid-0.19.0 | lib/decidim/mpassid/verification/metadata_collector.rb |
decidim-mpassid-0.18.0 | lib/decidim/mpassid/verification/metadata_collector.rb |