Agregue NodesSSO
a las dependencias del paquete (en su archivo Package.swift
):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
así como a su objetivo (por ejemplo, "Aplicación"):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
Copie las carpetas NodesSSO
de Resources/Views
y Public
de este repositorio y péguelas en su proyecto en los mismos directorios. Puede descargar este repositorio como zip y luego mover los archivos a los directorios mencionados.
Primero asegúrese de haber importado NodesSSO donde sea necesario:
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
) ) )
}
También hay parámetros para configurar las rutas que deberían habilitar el SSO en su proyecto. Eche un vistazo a la firma de NodesSSOConfig
para obtener más información.
Asegúrese de agregar las rutas SSO de Nodos relevantes, por ejemplo, en su configure.swift
o routes.swift
:
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
Para poder insertar el botón SSO, deberá agregar la etiqueta 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
}
}
En la página donde desea que aparezca el botón NodesSSO, incruste el archivo hoja sso-button
:
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable
NodesSSOProvider
es genérico y requiere un tipo que se ajuste a NodesSSOAuthenticatable
. Este protocolo tiene un método que se llama cuando el SSO finaliza exitosamente:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
Dado este AuthenticatedUser
el implementador puede buscar el email
y crear el usuario si no existe, o si existe, iniciar sesión automáticamente.
Este paquete es desarrollado y mantenido por el equipo de Vapor en Nodes.
Este paquete es un software de código abierto con licencia MIT.