Adicione NodesSSO às dependências do pacote (no seu arquivo Package.swift ):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]bem como ao seu alvo (por exemplo, "App"):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
] Copie as pastas NodesSSO de Resources/Views e Public deste repositório e cole-as em seu projeto nos mesmos diretórios. Você pode baixar este repositório como um zip e mover os arquivos para os diretórios mencionados.
Primeiro, certifique-se de importar o NodesSSO para todos os lugares necessários:
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
) ) )
} Existem também parâmetros para definir as rotas que devem habilitar o SSO em seu projeto. Dê uma olhada na assinatura do NodesSSOConfig para mais informações.
Certifique-se de adicionar as rotas SSO dos nós relevantes, por exemplo, em seu 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
}Para incorporar o botão SSO, você precisará adicionar a tag 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
}
} Na página em que você deseja que o botão NodesSSO apareça, incorpore o arquivo folha sso-button :
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable O NodesSSOProvider é genérico e requer um tipo que esteja em conformidade com NodesSSOAuthenticatable . Este protocolo possui um método que é chamado quando o SSO é concluído com êxito:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response > Dado este AuthenticatedUser o implementador pode então procurar o email e criar o usuário, se ele não existir, ou, se existir, efetuar login do usuário automaticamente.
Este pacote é desenvolvido e mantido pela equipe Vapor da Nodes.
Este pacote é um software de código aberto licenciado sob a licença MIT