Commit Graph

2540 Commits

Author SHA1 Message Date
Fredrik Pettersen
67d49fe483 refactor: Combine useSession and useGlobalSession into one hook 2020-05-17 17:45:00 +01:00
Fredrik Pettersen
cc2753efd5 feat(client): Add useGlobalSession which uses react context 2020-05-17 17:45:00 +01:00
Iain Collins
d0a403e56a Improve auth page CSS 2020-05-17 17:45:00 +01:00
Iain Collins
ab9d1d0a91 Add log and error page to handle signup errors
This error page will be used to handle display all errors to the client.

There will be an option to provide a custom error page URL.

Update includes some tweaks to CSS.
2020-05-17 17:45:00 +01:00
Iain Collins
c85ad74508 Fix bug with session expiry date
* Should database compatability issues with the model.
* Session expiry dates are still not enforced in client.
* All cookies are still sesison cookies and expire when the browser is closed.
* AccessToken expiry has been removed for now.

These are all know issues and intended behaviour for now, and will be addressed before release.
2020-05-17 17:45:00 +01:00
Iain Collins
2dca9308e9 Delete .DS_Store
<<< .DS_Store rage intensifies >>>
2020-05-17 17:45:00 +01:00
Iain Collins
494a267527 Fix typo import twitch provider
This worked locally as local file system is not case sensitive.
2020-05-17 17:45:00 +01:00
Iain Collins
4c163d54ca Fix bug with callback URL triggered on signout
In some flows the signout values was returning 'undefined'.
2020-05-17 17:45:00 +01:00
Iain Collins
b9853b362b Export Twitch provider
I haven't had a chance to test it myself yet, but very happy to include it!
2020-05-17 17:45:00 +01:00
Lori
121e978d76 added Twitch provider 2020-05-17 17:45:00 +01:00
Iain Collins
b9142217a9 Refactor callback URL handler
Less code in one place and less code overall.
2020-05-17 17:45:00 +01:00
Iain Collins
74d67dd801 Refactor callback URL handling
* Logic now centralized to avoid duplicaiton across multiple routes.
* Improved validation of query params.
* Also checks and cookie values as mitigation against cookie hijacking.
2020-05-17 17:45:00 +01:00
Iain Collins
121ed4a58e Add deleteSessionById() so signing out works
Can now securely sign out. Session cookie and entry in session db are deleted.
2020-05-17 17:45:00 +01:00
Iain Collins
cf903ca82e Add route to handle signout POST
* CSRF token is verified first.
* If token doesn't match, redirect client to signout URL to prompt for confirmation.
* `deleteSessionById()` not yet implemented in default adapter, so does not work.
* Identified area for reafactoring around callbackUrl behaviour.
2020-05-17 17:45:00 +01:00
Iain Collins
2f61795697 Add verification of URL prefix cookie
Improves security and defence against bad actors by adding a hash that uses the secret as a salt and checking it on every request (and overriding the cookie with a new secure one if the check fails.)
2020-05-17 17:45:00 +01:00
Iain Collins
d5257fe1db Add signout page
This commit does not include handling of actual signout request.
2020-05-17 17:45:00 +01:00
Iain Collins
822fbee0c4 Fix bugs with server side session handling
* Sets site name + api route now prior to sign in so avalible sooner.
* Improved next-auth/client logic for server side session handling.
* next-auth/client now checks regular and `__Secure-` prefixed cookies.
2020-05-17 17:45:00 +01:00
Iain Collins
937f9cdfda Fix case sensitivy of prefix for secure cookies 2020-05-17 17:45:00 +01:00
Iain Collins
2bb9355933 Improve signin page
* Better contrast
* Displays site name correctly
2020-05-17 17:45:00 +01:00
Iain Collins
57a9021107 Add route to return CSRF token to clients 2020-05-17 17:45:00 +01:00
Iain Collins
71fecfb1f2 Standardize done() call for routes 2020-05-17 17:45:00 +01:00
Iain Collins
1b374817f0 Improve and standardize how responses are returned
Use .status() and .json() where possible.
2020-05-17 17:45:00 +01:00
Iain Collins
eee927a6cd Add CSRF token and improve cookie security
Better default security for cookies, without impacting UX or DX.

Further work to do on CSRF protection, but this is a good start.
2020-05-17 17:45:00 +01:00
Iain Collins
0fabfa4ef9 Add viewport metatag to pages for mobile devices 2020-05-17 17:45:00 +01:00
Iain Collins
57bf54c28d Fix useEffect() warning in client
Technically useEffect should not return a value, or generates a warning.
2020-05-17 17:45:00 +01:00
Iain Collins
9bbc9100ab Update documentation 2020-05-17 17:45:00 +01:00
Iain Collins
e6cd78d71b Bump version number to publish new README 2020-05-17 17:45:00 +01:00
Iain Collins
3d66b90cf8 Update README.md 2020-05-17 17:45:00 +01:00
Iain Collins
ebfb02bd12 Bump version number to update docs 2020-05-17 17:45:00 +01:00
Iain Collins
2032ff1276 Update README 2020-05-17 17:45:00 +01:00
Iain Collins
08582aad83 Fix bugs with parsing options
Some of the logic was wrong following refactoring.
2020-05-17 17:45:00 +01:00
Iain Collins
c9944820c6 Fix bug in client session method
Introduced when refactoring error handling
2020-05-17 17:45:00 +01:00
Iain Collins
0697609dd0 Add beta tag to version
While it is still somewhere between an alpha and a beta am publishing to NPM to facilitate further testing.

The software is not ready for use yet!

While belived to be functional there are no formal tests and only casual manual testing has been done.

Features such as logout and session expiry checks have not yet been implemented.
2020-05-17 17:45:00 +01:00
Iain Collins
39d3689c22 Improve client error handling 2020-05-17 17:45:00 +01:00
Iain Collins
43023293ea Remove install script
No longer needed.
2020-05-17 17:45:00 +01:00
Iain Collins
91f319bc5f Add script to run build after install
This is to temporarily facilitate testing.
2020-05-17 17:45:00 +01:00
Iain Collins
f847488643 Improve error handling in client 2020-05-17 17:45:00 +01:00
Iain Collins
731e227cb6 Update babel config 2020-05-17 17:45:00 +01:00
Iain Collins
f2aafac40c Update formatting in README.md 2020-05-17 17:45:00 +01:00
Iain Collins
5bff4cb07f Add hook, improve client, cookies and docs
* Added React Hook to client.
* NextAuth.session() is now a universal method.
* Improved cookie support, all cookie names and options can be customised (feature request).
* Updated examples in documentation.
2020-05-17 17:45:00 +01:00
Iain Collins
06ef47cc40 Update client and documentation
This is very much a work in progress!
2020-05-17 17:45:00 +01:00
Iain Collins
3e0e4ecb5d Add simple client 2020-05-17 17:45:00 +01:00
Iain Collins
651f3c9887 Improve session and account linking 2020-05-17 17:45:00 +01:00
Iain Collins
cfbe24fc24 Add sessions
While not all signup flows are complete, basic core functionality is now working.

Users can sign in, have their identify verified and session is created for them in a secure manner.

* Added Session model and schema.
* Added createSession and getSessionByID handlers.
 * Added getUserByID handler.
 * Added /api/auth/session endpoint which displays info about the current session.
 * /api/auth/session endpoint is secure as it requires the HTTP only cookie.
 * Remove schema relationship data for now (no value currently and may cause problems if not modeled correctly).
2020-05-17 17:45:00 +01:00
Iain Collins
9432cfda90 Add Preact and PostCSS for pages
We need to be able to return simple server-side rendered pages for authentication (e.g. signin).

Using Preact means we can use JSX in them while keeping depedancy size small.

Ultimately, these pages should be customizable - both by passing in CSS and by specifying custom URL for page.

Additionally, the babel config has been tweaked to reduce bundle size by minifying assets and stripping comments from built assets.
2020-05-17 17:45:00 +01:00
Iain Collins
981adaae24 Update README.md 2020-05-17 17:45:00 +01:00
Iain Collins
ec3da81887 Add option to extend models / use custom models 2020-05-17 17:45:00 +01:00
Iain Collins
d150a7911c Update documentation 2020-05-17 17:45:00 +01:00
Iain Collins
018738bcc0 List files to be published to NPM in package.json 2020-05-17 17:45:00 +01:00
Iain Collins
e37e20faf5 Add babel config for esmodule
This allows next-auth to be imported into Node.js projects.
2020-05-17 17:45:00 +01:00