Ajoutez NodesSSO aux dépendances du package (dans votre fichier Package.swift ) :
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]ainsi qu'à votre cible (ex : « App ») :
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
] Copiez les dossiers NodesSSO de Resources/Views et Public de ce référentiel et collez-les dans votre projet dans les mêmes répertoires. Vous pouvez télécharger ce dépôt sous forme de zip, puis déplacer les fichiers dans les répertoires mentionnés.
Assurez-vous d'abord que vous avez importé NodesSSO partout où cela est nécessaire :
import NodesSSO public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
try services . register ( NodesSSOProvider < MyNodesSSOAuthenticatableUser > ( config : NodesSSOConfig (
projectURL : " https://myproject.com " ,
redirectURL : " https://url-for-sso.com " ,
salt : " MY-SECRET-HASH-FOR-SSO " ,
environment : env
) ) )
} Il existe également des paramètres permettant de définir les routes qui doivent activer le SSO dans votre projet. Jetez un œil à la signature de NodesSSOConfig pour plus d’informations.
Assurez-vous d'ajouter les routes SSO des nœuds pertinentes, par exemple dans votre configure.swift ou routes.swift :
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}Afin d'intégrer le bouton SSO, vous devrez ajouter la balise NodesSSO Leaf :
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
services . register { _ -> LeafTagConfig in
var tags = LeafTagConfig . default ( )
tags . useNodesSSOLeafTags ( )
return tags
}
} Sur la page sur laquelle vous souhaitez que le bouton NodesSSO apparaisse, intégrez le fichier feuille sso-button :
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable Le NodesSSOProvider est générique et nécessite un type conforme à NodesSSOAuthenticatable . Ce protocole a une méthode qui est appelée lorsque le SSO s'est terminé avec succès :
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response > Étant donné cet AuthenticatedUser l'implémenteur peut alors rechercher l' email et créer l'utilisateur s'il n'existe pas, ou si c'est le cas, connecter l'utilisateur automatiquement.
Ce package est développé et maintenu par l'équipe Vapor de Nodes.
Ce package est un logiciel open source sous licence MIT