0.15.4 • Published 8 years ago

alp-auth v0.15.4

Weekly downloads
3
License
ISC
Repository
github
Last release
8 years ago

Install

npm install --save alp-auth

What it does

  • Provides route and controller to login user
  • Provides extandable services and managers
  • Provides authentication middleware: context.state.connected and context.state.user

How to use

config/local.yml

server:
    google:
        clientId: xxxx
        clientSecret: xxxx

models/user/usersManager.server.js

import MongoStore from '../../db/mongo';
import { UsersManager } from 'alp-auth';

export default new UsersManager(new MongoStore('users'));

index.server.js

import Alp from 'alp-node';
import 'alp-node/fetch';
import authInit from 'alp-auth';
import googleStrategy from 'alp-auth/strategies/google';
import * as loginModuleDescriptor from './modules/auth/login';
import usersManager from './models/user/usersManager.server';

const app = new Alp(...);

// config / init
const authMiddleware = authInit({
   controllers,
   usersManager,
   strategies: { google: googleStrategy(config) },
   loginModuleDescriptor,
})(app);

// middlewares
app.use(authMiddleware);

routerBuilder.js

import { routes as authRoutes } from 'alp-auth';

export default function buildRouter(builder) {
    builder
        .add('home', '/', 'home.index')
        .add(...authRoutes.login)
        .add(...authRoutes.logout)
        .addDefaultRoutes();
}

modules/auth/login/index.js

export const identifier = 'login';
export View from './LoginView';

modules/auth/login/LoginView.js

import type { ReactNodeType } from 'alp-react-redux/src/types';
import T from 'react-alp-translate/src';
import { Helmet } from 'alp-react-redux/src';
import { LoginButtons } from 'react-alp-login/src';
import Header from '../components/HeaderComponent';

export default (): ReactNodeType => (
  <div className="login-view">
    <T id="title">{title => <Helmet title="Login" titleTemplate={`${title} - %s`} />}</T>
    <Header />
    <LoginButtons />
  </div>
);

modules/common/components/HeaderUserComponent.js

import type { ReactNodeType } from 'alp-react-redux/src/types';
import Link from 'react-alp-link/src';
import User from 'react-alp-user/src';
import T from 'react-alp-translate/src';

  <User>
    {user => (
      user ? (
        <span className="dropdown">
          {user.displayName}
          <ul className="list links">
            <li>
              <T id="header.logout">{t =>
                <Link to="logout" target="_self">{t}</Link>
              }</T>
            </li>
          </ul>
        </span>
      ) : (
        <div>
          <T id="header.login">{t => (
            <Link to="login" params={{ strategy: 'google' }} target="_self">{t}</Link>
          )}</T>
        </div>
      )
    )}
  </User>
);
0.15.4

8 years ago

0.15.3

8 years ago

0.15.2

8 years ago

0.15.1

8 years ago

0.15.0

8 years ago

0.14.1

8 years ago

0.14.0

8 years ago

0.13.0

9 years ago

0.12.0

9 years ago

0.11.1

9 years ago

0.11.0

9 years ago

0.10.1

9 years ago

0.10.0

9 years ago

0.9.0

9 years ago

0.8.1

9 years ago

0.8.0

9 years ago

0.7.0

9 years ago

0.6.0

9 years ago

0.5.0

9 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.0

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago