Swiftpack.co - Package -

Nodes SSO 🔑

Swift Version Vapor Version Circle CI codebeat badge codecov Readme Score GitHub license

📦 Installation

Update your Package.swift file.

.package(url: "https://github.com/nodes-vapor/nodes-sso.git", from: "1.0.0-beta")
targets: [
        name: "App",
        dependencies: [

Install resources

Copy the NodesSSO folders from Resources/Views and Public from this repo and paste them into your project into the same directories. You can download this repo as a zip and then move the files into the mentioned directories.

🚀 Getting started

import NodesSSO

Adding the provider

public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws {
    try services.register(NodesSSOProvider<AdminPanelUser>(config: NodesSSOConfig(
        projectURL: "https://myproject.com",
        redirectURL: "https://url-for-sso.com",
        salt: "MY-SECRET-HASH-FOR-SSO",
        environment: env

There are also parameters for setting the routes that should enable SSO in your project. Have a look at the signature of NodesSSOConfig for more information.

Adding the Leaf tag

Using a shared Leaf tag config

This package supports using a shared Leaf tag config which removes the task of registering the tags from the consumer of this package. Please see this description if you want to use this.

Manually registering the Leaf tag(s)

In order to render embed the SSO button, you will need to add the NodesSSO Leaf tag:

public func configure(_ config: inout Config, _ env: inout Environment, _ services: inout Services) throws {
    services.register { _ -> LeafTagConfig in
        var tags = LeafTagConfig.default()
        tags.use(NodesSSOConfigTag(), as: "nodessso:config")
        return tags

Embedding the SSO button

On the page you want the NodesSSO button to appear, embed the sso-button leaf file:


Conforming to NodesSSOAuthenticatable

The NodesSSOProvider is generic and requires a type that conforms to NodesSSOAuthenticatable. This protocol has one method that gets called when the SSO has finnished successfully:

public static func authenticated(_ user: AuthenticatedUser, req: Request) -> Future<Response>

Given this AuthenticatedUser the implementer can then look up the email and create the user if it doesn't exist, or if it does, log the user in automatically.

🏆 Credits

This package is developed and maintained by the Vapor team at Nodes. The package owner for this project is Steffen.

📄 License

This package is open-sourced software licensed under the MIT license


Help us keep the lights on

Used By