/**
* This file is part of Sesatheque.
* Copyright 2014-2015, Association Sésamath
*
* Sesatheque is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License version 3
* as published by the Free Software Foundation.
*
* Sesatheque is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Sesatheque (LICENCE.txt).
* @see http://www.gnu.org/licenses/agpl.txt
*
*
* Ce fichier fait partie de l'application Sésathèque, créée par l'association Sésamath.
*
* Sésathèque est un logiciel libre ; vous pouvez le redistribuer ou le modifier suivant
* les termes de la GNU Affero General Public License version 3 telle que publiée par la
* Free Software Foundation.
* Sésathèque est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ;
* sans même la garantie tacite de QUALITÉ MARCHANDE ou d'ADÉQUATION à UN BUT PARTICULIER.
* Consultez la GNU Affero General Public License pour plus de détails.
* Vous devez avoir reçu une copie de la GNU General Public License en même temps que Sésathèque
* (cf LICENCE.txt et http://vvlibri.org/fr/Analyse/gnu-affero-general-public-license-v3-analyse
* pour une explication en français)
*/
'use strict'
/**
* Format d'un serveur d'authentification à mettre en config
* Ne pas utiliser directement ce constructeur mais sa factory
* (qui vérifiera la validité des datas, ce constructeur ne gèrant que le format)
* @param {object} data
* @constructor
*/
function AuthSource (data) {
if (this instanceof AuthSource) {
if (!data) throw new Error('Il faut passer un objet avec baseId et baseUrl')
if (!data.baseId) throw new Error('baseId manquante')
if (!data.baseUrl) throw new Error('baseUrl manquante')
if (!/^(https?:\/\/[a-z0-9\-._]+(:[0-9]+)?(\/.*)?)?\/$/.test(data.baseUrl)) throw new Error(`BaseUrl ${data.baseUrl} invalide`)
/**
* id de cette source d'authentification (le constructeur ne vérifie pas qu'elle est connue du registrar)
* @type {string}
*/
this.baseId = String(data.baseId)
/**
* baseUrl de cette source d'authentification, toujours avec slash de fin
* (le constructeur ne vérifie pas qu'elle est connue du registrar ni cohérente avec baseId)
* @type {string}
*/
this.baseUrl = String(data.baseUrl)
if (this.baseUrl.substr(-1) !== '/') this.baseUrl += '/'
/**
* Facultatif, un nom à afficher si besoin
* @type {string}
* @default baseId
*/
this.name = this.name || this.baseId
} else {
throw new Error('Constructeur qui doit être appelé avec new')
}
}
module.exports = AuthSource