Skip to content

Commit

Permalink
add error message on metadata download
Browse files Browse the repository at this point in the history
  • Loading branch information
damikael committed Aug 5, 2020
1 parent 0b234ec commit c916240
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 44 deletions.
65 changes: 39 additions & 26 deletions spid-validator/server/api/metadata-sp.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,35 +103,48 @@ module.exports = function(app, checkAuthorisation, getEntityDir, database) {

Utility.metadataDownload(req.body.url, getEntityDir(config_dir.TEMP) + "/" + tempfilename).then(
(file_name) => {
let xml = fs.readFileSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename, "utf8");
let metadataParser = new MetadataParser(xml);
let entityID = metadataParser.getServiceProviderEntityId();
let organization_description = metadataParser.getOrganization().displayName;
let mdType = metadataParser.isMetadataForAggregated()? 'AG':'SP';

let organization_aggregated = undefined;
if(metadataParser.isMetadataForAggregated()) {
organization_aggregated = metadataParser.getSPIDAggregatedContactPerson();
}


metadata = {
type: mdType,
entity_id: entityID,
organization_code: organization,
organization_description: organization_description,
organization_aggregated: organization_aggregated,
url: req.body.url,
xml: xml
}
try {
let xml = fs.readFileSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename, "utf8");
let metadataParser = new MetadataParser(xml);

req.session.metadata = metadata;
fs.copyFileSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename, getEntityDir(entityID) + "/sp-metadata.xml");
database.setMetadata(user, organization, entityID, external_code, type, req.body.url, xml);
fs.unlinkSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename);
let entityID = metadataParser.getServiceProviderEntityId();
if(entityID==null || entityID=='') throw new Error("EntityID non specificato");

let result = (authorisation=='API')? metadata : xml;
res.status(200).send(result);
let organization_description = metadataParser.getOrganization().displayName;
if(organization_description==null || organization_description=='') throw new Error("Organization non definito");

let mdType = metadataParser.isMetadataForAggregated()? 'AG':'SP';

let organization_aggregated = undefined;
if(metadataParser.isMetadataForAggregated()) {
organization_aggregated = metadataParser.getSPIDAggregatedContactPerson();
}


metadata = {
type: mdType,
entity_id: entityID,
organization_code: organization,
organization_description: organization_description,
organization_aggregated: organization_aggregated,
url: req.body.url,
xml: xml
}

req.session.metadata = metadata;
fs.copyFileSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename, getEntityDir(entityID) + "/sp-metadata.xml");
database.setMetadata(user, organization, entityID, external_code, type, req.body.url, xml);
fs.unlinkSync(getEntityDir(config_dir.TEMP) + "/" + tempfilename);

let result = (authorisation=='API')? metadata : xml;
res.status(200).send(result);

} catch(exception) {
Utility.log("ERR /api/metadata-sp/download", exception);
res.status(500).send("Si è verificato un errore durante il parsing del file xml. " + exception.toString());
}

},
(err) => {
req.session.metadata = null;
Expand Down
42 changes: 24 additions & 18 deletions spid-validator/server/lib/saml-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -222,34 +222,40 @@ class MetadataParser {
let doc = new DOMParser().parseFromString(this.metadata.xml);

let organization_name = select("//md:EntityDescriptor/md:Organization/md:OrganizationName", doc);
organization.name = select("string(//md:OrganizationName)", organization_name[0]);
if(organization_name.length > 1) {
for(let n in organization_name) {
let name = organization_name[n];
if(name.getAttribute("lang")=="it") {
organization.name = select("string(//)", name);
if(organization_name && organization_name.length>0) {
organization.name = select("string(//md:OrganizationName)", organization_name[0]);
if(organization_name.length > 1) {
for(let n in organization_name) {
let name = organization_name[n];
if(name.getAttribute("lang")=="it") {
organization.name = select("string(//)", name);
}
}
}
}

let organization_display_name = select("//md:EntityDescriptor/md:Organization/md:OrganizationDisplayName", doc);
organization.displayName = select("string(//md:OrganizationDisplayName)", organization_display_name[0]);
if(organization_display_name.length > 1) {
for(let n in organization_display_name) {
let display_name = organization_display_name[n];
if(display_name.getAttribute("lang")=="it") {
organization.displayName = select("string(//)", display_name);
if(organization_display_name && organization_display_name.length>0) {
organization.displayName = select("string(//md:OrganizationDisplayName)", organization_display_name[0]);
if(organization_display_name.length > 1) {
for(let n in organization_display_name) {
let display_name = organization_display_name[n];
if(display_name.getAttribute("lang")=="it") {
organization.displayName = select("string(//)", display_name);
}
}
}
}

let organization_url = select("//md:EntityDescriptor/md:Organization/md:OrganizationURL", doc);
organization.url = select("string(//md:OrganizationURL)", organization_url[0]);
if(organization_url.length > 1) {
for(let n in organization_url) {
let url = organization_url[n];
if(url.getAttribute("lang")=="it") {
organization.url = select("string(//)", url);
if(organization_url && organization_url.length>0) {
organization.url = select("string(//md:OrganizationURL)", organization_url[0]);
if(organization_url.length > 1) {
for(let n in organization_url) {
let url = organization_url[n];
if(url.getAttribute("lang")=="it") {
organization.url = select("string(//)", url);
}
}
}
}
Expand Down

0 comments on commit c916240

Please sign in to comment.