Commit Graph

64 Commits

Author SHA1 Message Date
Yuri Gor
d02c41568c chore(deps): upgrade typeorm to v0.2.30 (#1145) 2021-01-18 19:27:09 +01:00
suraj10k
b1f6901c52 chore: Comply to Vercel Open Source sponsorship [skip release] (#1087)
* added banner

* Changed banner image allignment

* changed location of banner again

* added to acknowledgement

* added to acknowledgement 1

* changed image size

* k

* l

* s

* s

* .

* added link to the banner in readme.md

* fixed image redirect

* fixed image allignment

* made changes in readme and index.js

* Changed the source of the banner image

* added banner to the footer of the site
2021-01-13 19:28:56 +01:00
Balázs Orbán
2e4832caf8 chore: update caiuse-lite db 2021-01-11 20:06:42 +01:00
Balázs Orbán
173df76c0f feat: improve package development experience (#1064)
* chore(deps): add next and react to dev dependencies

* chore: move build configs to avoid crash with next dev

* chore: add next js dev app

* chore: remove .txt extension from LICENSE file

* chore: update CONTRIBUTING.md

* chore: watch css under development

* style(lint): run linter on index.css

* chore: fix some imports for dev server

* refactor: simplify client code

* chore: mention VSCode extension for linting

* docs: reword CONTRIBUTING.md

* chore: ignore linting pages and components
2021-01-10 20:20:21 +01:00
Balázs Orbán
f2ad69358f refactor: code base improvements (#959)
* chore: fix casing of OAuth

* refacotr: simplify default callbacks lib file

* refactor: use native URL instead of string concats

* refactor: move redirect to res.redirect, done to res.end

* refactor: move options to req

* refactor: improve IntelliSense, name all functions

* fix(lint): fix lint errors

* refactor: remove jwt-decode dependency

* refactor: refactor some callbacks to Promises

* revert: "refactor: use native URL instead of string concats"

Refs: 690c55b04089e4f3157424c816d43ee4cecb77a0

* chore: misc changes

Co-authored-by: Balazs Orban <balazs@nhi.no>
2021-01-01 14:53:06 +01:00
Balazs Orban
15196ee3d1 chore(release): change semantic-release/git to semantic-release/github 2020-12-29 22:42:32 +01:00
Balázs Orbán
aa4439e182 feat: add semantic-release (#920) 2020-12-29 22:00:08 +01:00
dependabot[bot]
7a4534a6b1 chore(dep): Bump highlight.js from 9.18.1 to 9.18.5 (#880)
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 9.18.1 to 9.18.5.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/9.18.5/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/9.18.1...9.18.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Balázs Orbán <info@balazsorban.com>
Co-authored-by: Nico Domino <yo@ndo.dev>
2020-12-07 10:48:01 +01:00
Joseph Vaughan
4635113133 add(db): Add support for Fauna DB (#708)
* Add support for Fauna DB

* Add integration tests

Co-authored-by: Nico Domino <yo@ndo.dev>
2020-12-06 20:19:14 +01:00
Balázs Orbán
d242d72106 fix(provider): handle no profile image for Spotify (#914)
* chore(deps): upgrade "standard"

* style(lint): run lint fix

* fix(provider): optional chain Spotify provider profile img
2020-12-05 18:55:12 +01:00
Iain Collins
3b40335202 Add full end-to-end integration tests
Full end-to-end integration tests for Twitter (OAuth 1) and GitHub (OAuth 2) using Puppeteer and Mocha.

This replaces Cypress tests due to issues with Cypress not being able to run tests against external URLs, which we need for our integration tests.

The integration test runner is hosted outside of GitHub Actions (it cannot be hosted by GitHub or on AWS due to IP access controls placed on sign in by providers like Twitter and GitHub) and so the integration tests may not pass if the test runner is offline. If this happens, tests can be re-run later when the test runner is available.

See Pull Request #641 for details.
2020-09-08 12:41:30 +01:00
dependabot[bot]
eb26722833 Bump bl from 2.2.0 to 2.2.1
Bumps [bl](https://github.com/rvagg/bl) from 2.2.0 to 2.2.1.
- [Release notes](https://github.com/rvagg/bl/releases)
- [Commits](https://github.com/rvagg/bl/compare/v2.2.0...v2.2.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-04 11:29:48 +01:00
Iain Collins
e2e28fcfd0 Update package-lock.json 2020-09-03 23:47:40 +01:00
Jefferson Bledsoe
15cd608b19 Add initial end-to-end tests (#298)
* Add cypress, testing-library/cypress and server dev helper to package dev dependencies

* Add initial signin test and placeholder cypress files

* Add initial signout tests

* Add initial verify-request test

* Move page-only tests into a 'pages' directory

* Add an invalid email signup workflow test

* Use home-page sign in button for email workflow

* Some tests to check that clicking the button takes the user to the correct OAuth page (warning: fragile!)

* Add a couple of npm scripts to make it easier to run/ developer e2e tests

Co-authored-by: Iain Collins <me@iaincollins.com>
2020-09-03 11:41:11 +01:00
Iain Collins
ea093dc0fc Merge branch 'main' of github.com:iaincollins/next-auth into main 2020-07-31 10:01:04 +01:00
Iain Collins
cd61178f44 Bump version number to 3.1.0 2020-07-31 10:00:56 +01:00
Iain Collins
eb53219cbd Update website and documentation for mssql 2020-07-31 09:39:24 +01:00
Iain Collins
3aeba2aa09 Allow duplicate NULL email address in MSSQL 2020-07-31 09:39:24 +01:00
Mr D
8fa9d00958 mssql support 2020-07-31 09:39:24 +01:00
Iain Collins
8d68807bfe Remove node-jose dependency
This is an unused dependancy.

`jose` is used instead.
2020-07-30 23:33:29 +01:00
Marc
5886f9bea8 Add Provider: Basecamp (#511)
Changes Include:
• Added Basecamp as a provider
• Added Basecamp provider to documentation
• Bumped Version to 3.0.1 in package-lock
2020-07-30 15:12:26 +02:00
Iain Collins
19da066b04 Bump version number to 3.0.0 2020-07-27 05:22:15 +01:00
Iain Collins
9406f8b332 Improve callbacks by adding User object to calls 2020-07-27 05:20:34 +01:00
Iain Collins
dcbd7a6703 Improve TypeORM adapter (#460)
* Uses `require_optional` and `peerOptionalDependencies` instead of dynamic import to resolve issue some users have experience with using using compliers/bundlers (especially on starter projects) that don't handle dynamic imports well.

This should (hopefully) also make it easier to support older versions of Internet Explorer by avoiding bundlers that choke on dynamic imports unless MongoDB is included as a dependancy (even though it's not code they need to compile).

We use `require_optional` to load `ObjectID` conditionally, if NextAuth.js is using MongoDB. This is also exactly how the MongoDB driver itself loads the ObjectID from the `bson/bson-ext` module.

Should resolve #251
    
* The default name for the TypeORM connection is now 'nextauth' instead of 'default'.

This should help people avoid problems with connection re-use when not using serverless (including in local development), especially if they are doing things with their default connection that differ from whats expected by NextAuth.js (like not using UTF-8 for encoding or UTC timezones).

* Now uses connection manager object from the connection, to allow a custom TypeORM connection name to be specified (resolves #459).
2020-07-27 05:20:34 +01:00
Iain Collins
c1b412814a WIP refactor JWT based on feedback 2020-07-27 05:20:34 +01:00
Iain Collins
fb4381d8eb Implement JWE 2020-07-27 05:20:34 +01:00
Iain Collins
481db425d6 WIP Add JWE
Working implementation (with limited key length and no exp check) using node-jose from Cisco.

I want to compare it panva/jose which has more features before building it out.
2020-07-27 05:20:34 +01:00
Iain Collins
999222cd97 Refactor to simplify site URL configuration
Includes some linter fixes
2020-07-27 05:20:34 +01:00
dependabot[bot]
9b29ed347d Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-17 12:06:12 +01:00
Iain Collins
f899d7bb04 Update version to 2.1.0 2020-06-24 01:57:28 +01:00
Iain Collins
0eaec78399 Bump version number for release 2020-06-21 17:00:33 +01:00
Iain Collins
5929de4249 Remove babel-preset-minify
It made debugging harder and I don't think it's currently worth the tradeoff.

In future we might bring it back conditionally (e.g. prod builds only).
2020-06-21 01:54:18 +01:00
SabariVig
8229a3b420 Gitlab Provider 2020-06-20 08:25:45 +01:00
Iain Collins
554c32c6f1 Refactoring naming strategy
Not a breaking change, just a refactor!

* Removes dependency on external library
* Resolves problem of messy logic in models and transform by putting it all in a naming strategy
* No change to table / collection schemas!
2020-06-14 14:15:28 +01:00
Iain Collins
ac12d6a6e2 Add database drivers as devDependencies for testing 2020-06-14 03:50:22 +01:00
Iain Collins
156c8e1e97 Make email addresses optional when signin in 2020-06-11 13:10:59 +01:00
Iain Collins
96900e77f6 Fix typos in README 2020-06-08 10:56:17 +01:00
Iain Collins
0d825bbc39 Refactor JWT, Sessions and add allowSignin() method (#223)
## Database

- [x] Databases are now optional - useful with OAuth + JWT if you only need access control
- [x] Updated documentation and added example code for custom database adapters

## JWT

- [x] JWT option is now an object that groups JWT related options together (was a boolean)
- [X] Refactored JWT lib and add AES encryption / decryption as well as signing / verification
- [x] Allows JWT encode/decode methods to be overridden as options
- [x] Contents of JWT can easily customised - without needing to use custom encode/decode
- [x] Exported JWT methods so they can be called from custom API routes
- [x] Updated documentation for new JWT options

## Sessions

- [x] All session options (eg. `maxAge`, `updateAge`) now grouped under single `session` option
- [x] Using JWT for sessions is now enabled from session object (`session.jwt: true`)
- [x] All options involving time now use seconds (instead of milliseconds) for consistency
- [x] Added option to customise the Session object that is returned from `/api/auth/session`
- [x] Update documentation for new Session options

## Other improvements

- [x] Added `allowSignin()` option to control what users / accounts are allowed to sign in
- [x] Refactored `callbackUrlHandler()` - this option  is now called `allowCallbackUrl()` 
- [x] Minor improvements to NextAuth.js client API methods
- [x] Minor to NextAuth.js API routes
- [x] Minor improvements to built-in error pages
- [x] Refactored database models
   All tables now include a `created` column for each row which contains the `datetime` of when the row (e.g. User / Account / Session) was created.
  Additionally, sessions now use the name 'expiry' for the expiry `datetime` value for consistency with other models.
2020-06-08 04:01:21 +01:00
Iain Collins
315d75e40b Fix bug parsing hostname from database URL
Resolves #200
2020-06-03 22:01:37 +01:00
Iain Collins
f8bfe0c613 Fix bug linking accounts when using JWT with Mongo
Resolves #198
2020-06-03 18:31:06 +01:00
Iain Collins
59403ec607 Refactor Apple provider to genereate secret dynamically
See #176
2020-06-01 02:20:29 +01:00
Iain Collins
7560d4ba80 Add new methods to client 2020-06-01 01:06:44 +01:00
Gerald Nolan
fd6fceb884 Sign In with Apple 2020-05-27 14:30:15 +01:00
Iain Collins
2f16d8448d Fix issues with database; make it easier to test
These changes fix compatibility issues with common SQL databases including MySQL, MariaDB and Postgres.

* Fixes #147 - datetime now ANSI SQL timestamp
* Fixes #160 - AccessToken and RefreshToken type change from varchar to text
* Adds Docker Compose files to make it easier to test database integration.

TODO:

* Update documentation with configuration examples and latest compatibility info
* Create DB URI parser (currently only object config works)
* Database table/collection name prefix (will default to `next-auth_`)
* MongoDB support

MongoDB has some issues which mean it will require additional work and refactoring to support (while preserving SQL DB support, which is important).

It's going to take some thinking about to get right; MongoDB support might have to be dropped from 2.0 (and follow in a subsequent release) but I'm going to review options and consider the impact before making a call.
2020-05-25 18:15:33 +01:00
Nico Domino
b176c15405 Docs - Add search (#129) 2020-05-18 15:10:40 +02:00
Iain Collins
966577fc02 Improve email sign in flow 2020-05-17 17:45:00 +01:00
Iain Collins
fc28374f88 Add email sign in flow
* Added email verification adapater methods
* Added support on sign in page for email providers
* Added check email page
* Added SMTP transport to send email messages

Includes refactoring of model and handlers for the email verification flow.
2020-05-17 17:45:00 +01:00
Iain Collins
73a5be5d6c Fix for breaking changes in Twitch API
Twitch recently made breaking changes to their oAuth API.

It no longer works like other oAuth 2 providers. The documentation for it is extensive, but poor quality.

This update still has intermittant problems, but as far as I can make out  the problem is the API; they have completed their roll out to 100% but it's still failing sometimes.
2020-05-17 17:45:00 +01:00
Iain Collins
ed6328679a Improve client
* Improve options passing
* Fix bug with cookie parsing
* Remove isomorphic-unfetch (fetch built from Next.js 9.4)
2020-05-17 17:45:00 +01:00
Iain Collins
7ef2a2ec93 Add eslint with Standard JS and reformat code
* Run `npm run lint` to find (and where possible, fix) linting issues.
* Includes some minor refactoring, including directory structure for adapters and models, so that code for an adapter and the models for it sit together.

Background:

I've added elint to try and ensure a consistent style and to uncover hidden bugs.

I don't actually care much about what the rules are, it's just helpful to have a baseline.

If it's hard to get code to be compliant, I would rather we just disable a rule in that block of code until we can figure it out and am totally fine with that.

I'd much prefer that than the chore of maintaining a custom set of rules, which is why I just picked Standard JS.

Unfortunately, there is quite a lot that doesn't match the Standard JS format at this point, so this is going to be a big PR.

The file size has gone down in quite a few places, which is nice. I think it may have uncovered potential bugs.

I've run through the flow and everything seems to work as before, though it took some debugging after refactoring.

I have not yet added eslint to a commit hook and am in two minds about that.

This is an open source project and I'd like to make it easy to maintain, but also to have as low a barrier to entry as possible for contributors.

I'm happy to go with encouraging folks to run the linter and try to fix errors they find and to take on the work of wrangling any issues myself.
2020-05-17 17:45:00 +01:00