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