Turnstile Authentication with a MongoDB ORM backend
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Perfect Turnstile with MongoDB

Get Involed with Perfect!

Star Perfect On Github Stack Overflow Follow Perfect on Twitter Join the Perfect Slack

Swift 3.0 Platforms OS X | Linux License Apache PerfectlySoft Twitter Slack Status

This example demonstrates the integration Stormpath's Turnstile authentication system with Perfect and a MongoDB ORM.

The library can be found at https://github.com/PerfectlySoft/Perfect-Turnstile-MongoDB

This package builds with Swift Package Manager and is part of the Perfect project.

Ensure you have installed Xcode 8.0 or later.

Server Credentials

You will need to set correct server credentials to access your MongoDB Server:

MongoDBConnection.host = "localhost"
MongoDBConnection.database = "perfect_testing"

These are located in main.swift lines 38-39.

Setup - Xcode 8

  • Check out or download the project;
  • In terminal, navigate to the directory and execute
swift package generate-xcodeproj
  • Open PerfectTurnstileMongoDBDemo.xcodeproj

To run this project from Xcode, edit the Scheme, Under "Options" for "run", check "Use custom working directory" and choose the project's working directory. After doing this, the project can be run from within Xcode.

Setup - Terminal

  • Check out or download the project;
  • In terminal, navigate to the directory
  • Execute swift build
  • Once the project has compiled, execute ./.build/debug/PerfectTurnstileMongoDBDemo
[INFO] Starting HTTP server on with document root ./webroot

Included JSON Routes

The framework includes certain basic routes:

POST /api/v1/login (with username & password form elements)
POST /api/v1/register (with username & password form elements)
GET /api/v1/logout

Included Routes for Browser

The following routes are available for browser testing:


These routes are using Mustache files in the webroot directory.