From 767dceb3d9576d2cc75088089c53566089da189b Mon Sep 17 00:00:00 2001 From: Tanner Nelson Date: Thu, 22 Sep 2016 20:48:50 -0400 Subject: [PATCH] syntax + css updates --- auth/middleware.md | 2 +- auth/protect.md | 2 +- auth/request.md | 29 ++++++++++++++++------------- auth/user.md | 14 +++++++------- template/styles/main.css | 20 +++++++++++++------- template/styles/main.css.map | 2 +- template/styles/main.sass | 19 +++++++++++++------ 7 files changed, 52 insertions(+), 36 deletions(-) diff --git a/auth/middleware.md b/auth/middleware.md index 5b3ba6be..af4f766e 100644 --- a/auth/middleware.md +++ b/auth/middleware.md @@ -38,7 +38,7 @@ let auth = AuthMiddleware(user: User.self) { value in ### Cache -A custom `CacheProtocol` can be passed as well. The `MemoryCache()` used by default is not persisted between server restarts and does not allow for sharing between multiple running instances. +A custom `CacheProtocol` can be passed as well. The `MemoryCache` used by default is not persisted between server restarts and does not allow for sharing between multiple running instances. ```swift import VaporRedis diff --git a/auth/protect.md b/auth/protect.md index 0a587d4c..d606fe3c 100644 --- a/auth/protect.md +++ b/auth/protect.md @@ -30,4 +30,4 @@ drop.grouped(protect).group("secure") { secure in } ``` -Visiting `GET secure/about` will return the authorized user, or an error if no user is authorized. +Visiting `GET /secure/about` will return the authorized user, or an error if no user is authorized. diff --git a/auth/request.md b/auth/request.md index 50bc73d8..4368e4dd 100644 --- a/auth/request.md +++ b/auth/request.md @@ -24,7 +24,9 @@ Basic authorization consists of a username and password concatenated into a stri Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l ``` -Here is what an example header looks like. You can read more about basic auth on [wikipedia](https://en.wikipedia.org/wiki/Basic_access_authentication). +This is what an example header looks like. You can read more about basic auth on [wikipedia](https://en.wikipedia.org/wiki/Basic_access_authentication). + +Below is how you access this header using `req.auth`. ```swift guard let credentials = req.auth.header?.basic else { @@ -63,13 +65,13 @@ To access the raw authorization header, use `req.auth.header?.header`. ## Credentials -Both Basic and Bearer return something that conforms to `Credentials`. You can always create a custom `Credentials` object for authorization by conforming your own class to `Credentials` or by manually creating an `APIKey` or `AccessToken`. +Both Basic and Bearer return something that conforms to `Credentials`. You can always create a custom `Credentials` object for authentication by conforming your own class to `Credentials` or by manually creating an `APIKey`, `AccessToken`, or `Identifier`. ```swift let key = AccessToken(string: "apikey123") ``` -### Form +### Input You can also create credentials from form or JSON data. @@ -96,26 +98,25 @@ If this call succeeds, the user is logged in and a session has been started. The ### Authenticate -Logging in calls the `authenticate` method on the `Realm`. If you have simply passed an `Auth.User` conformer to the `AuthMiddleware`, then this will call the `authenticate` method on that type. +Logging in calls the `authenticate` method on `Auth.User` model you supplied to the `AuthMiddleware`. Make sure you add support for all the credential types you may want to use. -The method will be passed whichever credentials you are trying to login with, so make sure you add support for all the credential types you may want to use on your `Auth.User`. +> Note: If you used a custom Realm, it will be called instead. ### Identifier -One important credential type is the `Identifier` type. This is used by Vapor when fetching the `User` object from the authorization cookie. It is also a convenient way to log a user in manually. +Another important credential type is the `Identifier` type. This is used by Vapor when fetching the `User` object from the `vapor-auth` cookie. It is also a convenient way to log a user in manually. ```swift static func authenticate(credentials: Credentials) throws -> Auth.User { - if ... { - ... - } else if let id = credentials as? Identifier { + switch credentials { + ... + case id as Identifier: guard let user = try User.find(id.id) else { throw Abort.custom(status: .badRequest, message: "Invalid identifier.") } return user - } else { - ... + ... } } ``` @@ -137,9 +138,11 @@ If you just want to log the user in for a single request, disable persistance. req.auth.login(credentials, persist: false) ``` +> Note: Supporting `Identifier` credentials is required for persisted authentication to work properly. + ## User -By default, `request.auth.user()` returns the authorized `Auth.User`. This will need to be casted to your internal user type if you want to access its values. +By default, `request.auth.user()` returns the authorized `Auth.User`. This will need to be casted to your internal `User` type for use. Adding a convenience method on `Request` is a great way to simplify this. @@ -155,4 +158,4 @@ extension Request { } ``` -Now you can get access to your `User` type with `try req.user()`. +Now you can access your `User` type with `try req.user()`. diff --git a/auth/user.md b/auth/user.md index fe7496d3..e881d833 100644 --- a/auth/user.md +++ b/auth/user.md @@ -46,9 +46,9 @@ A user is authenticated when a set of credentials is passed to the static `authe protocol Credentials { } ``` -The credentials protocol is an empty protocol that any type can conform to. This gives great flexibility to your authorization model, but also requires that you properly handle the case of unsupported credential types. +The credentials protocol is an empty protocol that any type can conform to. This gives great flexibility to your authentication model, but also requires that you properly handle the case of unsupported credential types. -#### AccessToken +#### Access Token One of the simplest credential types included is `AccessToken`. It carries a `String` based token that will be used to authenticate the user. @@ -80,7 +80,11 @@ Once we have found the user associated with the supplied access token, we simply Vapor uses the `Identifier` credential type internally to lookup users from sessions. You can read more in the [Request](request.md) section. -### Many Credentials +### Register + +Similar to the authenticate method, the register method takes credentials. But instead of fetching the user from the data store, it provides a convenient way to create the user. You are not required to register your users through this method. + +## Example Here is an example of a User that supports multiple credentials. @@ -114,7 +118,3 @@ extension User: Auth.User { ``` > Note: Try not to store passwords. If you must, hash and salt them. - -### Register - -Similar to the authenticate method, the register method takes credentials. But instead of fetching the user from the data store, it provides a convenient way to create the user. You are not required to register your users through this method. diff --git a/template/styles/main.css b/template/styles/main.css index 0deb0e55..42465e8c 100644 --- a/template/styles/main.css +++ b/template/styles/main.css @@ -17,6 +17,12 @@ a { a:hover { color: #f6cfcf; } +h1, h2, h3, h4, h5, h6 { + color: #333; + margin: 0; + font-family: "Quicksand"; + letter-spacing: -1px; } + h1 { font-size: 38px; font-weight: 200; } @@ -30,13 +36,13 @@ h2 { h3 { font-size: 24px; - font-weight: 400; } + font-weight: 400; + margin-bottom: 6px; } -h1, h2, h3, h4, h5, h6 { - color: #333; - margin: 0; - font-family: "Quicksand"; - letter-spacing: -1px; } +h4 { + font-size: 18px; + font-weight: 400; + margin-bottom: 6px; } :target { background: #ffff99; } @@ -293,7 +299,7 @@ p code, li code { border-radius: 5px; padding: 3px 5px; display: inline-block; - color: #92a0b9; + color: #6b7891; box-shadow: 0 1px 0px 0px rgba(0, 0, 0, 0.1); } pre { diff --git a/template/styles/main.css.map b/template/styles/main.css.map index 8392cde6..bd469dad 100644 --- a/template/styles/main.css.map +++ b/template/styles/main.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["main.sass"], "names": [], "file": "main.css" diff --git a/template/styles/main.sass b/template/styles/main.sass index dc346644..4249a2d2 100644 --- a/template/styles/main.sass +++ b/template/styles/main.sass @@ -20,6 +20,13 @@ a a:hover color: #f6cfcf + +h1, h2, h3, h4, h5, h6 + color: #333 + margin: 0 + font-family: 'Quicksand' + letter-spacing: -1px + h1 font-size: 38px @media screen and (min-width: $tablet) @@ -33,12 +40,12 @@ h2 h3 font-size: 24px font-weight: 400 + margin-bottom: 6px -h1, h2, h3, h4, h5, h6 - color: #333 - margin: 0 - font-family: 'Quicksand' - letter-spacing: -1px +h4 + font-size: 18px + font-weight: 400 + margin-bottom: 6px \:target background: #ffff99 @@ -329,7 +336,7 @@ p code, li code border-radius: 5px padding: 3px 5px display: inline-block - color: #92a0b9 + color: #6b7891 box-shadow: 0 1px 0px 0px rgba(0, 0, 0, 0.1) pre