1.5.15 • Published 10 months ago

@ibercore/next-auth v1.5.15

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@ibercore/next-auth

Next Auth Library multiple providers

NPM JavaScript Style Guide

Install

npm install --save @ibercore/next-auth

Client Side

// pages/_app.tsx
import type { AppProps } from 'next/app'
import React, { Component } from 'react'
import { SessionProvider, useSession } from '@ibercore/next-auth'

export default function App({ Component, pageProps }: AppProps) {
  return <SessionProvider>
    <Auth>
      <Component {...pageProps} />
    </Auth>
  </SessionProvider>
}

const Auth = ({ children }: { children: any }): any => {
  const { status } = useSession()
  if (status === 'loading') return <p>Loading...</p>
  if (status === 'unauthenticated') return <SignIn />
  return children
}
// pages/signin.tsx
import { useSession } from "@ibercore/next-auth"

const SignIn = () => {
    const { signIn } = useSession()
    return <div>
        {/* Create form with two inputs username & password and call on submit */}
        <button onClick={() => signIn('credentials', { username: 'test', password: 'test' })} >CREDENTIALS</button>
        <button onClick={() => signIn('facebook')}> FACEBOOK</button>
        <button onClick={() => signIn('google')}> GOOGLE</button>
    </div>
}

export default SignIn;

Configure API

// pages/auth/api/[...nextauth].ts
import { NextAuth, NextAuthOptions } from "@ibercore/next-auth";
import CredentialProvider from "@ibercore/next-auth/providers/credentials";
import GoogleProvider from "@ibercore/next-auth/providers/google";
import FacebookProvider from "@ibercore/next-auth/providers/facebook";
import EmailProvider from "@ibercore/next-auth/providers/email"


export default function handler(res, req) {
    const nextAuthOptions: NextAuthOptions = {
        secret: process.env.NEXTAUTH_SECRET,
        callbacks: {
            async signIn({ session, provider }) {
                console.log("callbacks signIn", { session, provider })
            },
            async signOut({ session, provider }) {
                console.log("callbacks signOut", { session, provider })
            }
        },
        pages: {
            signIn: '/'
        },
        providers: [
            EmailProvider({
                from: process.env.EMAIL_FROM,
                server: {
                    host: process.env.EMAIL_HOST,
                    user: process.env.EMAIL_USER,
                    pass: process.env.EMAIL_PASS
                }
            }),
            CredentialProvider({
                async authorize(credentials) {
                    const user = {
                        id: '222',
                        role: 'role',
                        name: 'User',
                        lastName: 'Name',
                    }
                    if (!user) return null
                    const validate = true
                    if (!validate) return null
                    return user
                },
            }),
            GoogleProvider({
                clientId: process.env.GOOGLE_CLIENT_ID!,
                clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
            }),
            FacebookProvider({
                clientId: process.env.FACEBOOK_CLIENT_ID!,
                clientSecret: process.env.FACEBOOK_CLIENT_SECRET!,
            }),

        ]
    }

    return NextAuth(res, req, nextAuthOptions)
}

Options

NextAuthOptions

Notes

If you are using EmailProvider add this on you package.json

"browser": {
    "fs": false,
    "os": false,
    "path": false,
    "net": false,
    "dns": false,
    "child_process": false,
    "tls": false
}

License

MIT ©

1.5.15

10 months ago

1.5.10

1 year ago

1.5.12

1 year ago

1.5.11

1 year ago

1.5.14

1 year ago

1.5.13

1 year ago

1.4.6

1 year ago

1.4.5

1 year ago

1.4.4

1 year ago

1.4.2

1 year ago

1.5.7

1 year ago

1.5.6

1 year ago

1.5.5

1 year ago

1.5.4

1 year ago

1.5.3

1 year ago

1.5.2

1 year ago

1.5.1

1 year ago

1.4.9

1 year ago

1.4.8

1 year ago

1.4.7

1 year ago

1.3.7

1 year ago

1.3.6

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

1.2.4

1 year ago

1.4.1

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.3.10

1 year ago

1.3.13

1 year ago

1.3.11

1 year ago

1.3.12

1 year ago

1.3.17

1 year ago

1.3.15

1 year ago

1.3.16

1 year ago

1.3.9

1 year ago

1.3.8

1 year ago

1.1.21

1 year ago

1.1.20

1 year ago

1.1.18

1 year ago

1.1.17

1 year ago

1.1.16

1 year ago

1.1.15

1 year ago

1.1.14

1 year ago

1.1.13

1 year ago

1.1.12

1 year ago

1.1.11

1 year ago

1.1.10

1 year ago

1.1.9

1 year ago

1.1.8

1 year ago

1.1.7

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.0

1 year ago