npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@uam/vuejs-user

v0.14.14

Published

Vuejs user plugin

Downloads

93

Readme

Vuejs user

Installation

via npm

npm install @uam/vuejs-user

via yarn

yarn add @uam/vuejs-user

Usage

Provided components are built on Bootstrap 4 so install bootstrap 4 as stated here.

For Font Awesome icons, add following to <head> :

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

Install Vuejs user module as follows:

# main.js

import userPlugin from '@uam/vuejs-user'

import Profile from './models/Profile'
import User from './models/User'

let logoutCallback = () => {
  store.dispatch('beforeLogout')
}

let apiRoutes = {
  login: '/login',
  logout: '/logout',
  requestPasswordReset: '/request-password-reset',
  profile: '/profile',
  refresh: '/login/refresh',
  signup: '/signup',
  updatePassword: '/user/change-password'
}

let routes = {
  login: 'login',
  logout: 'login', // route to go after logout
  profile: 'profile'
}

// key is credential param used by user plugin, value is param needed by backend
let credentialsParamMapper = {
  username: 'email'
}

let profileModel = new Profile()
let userModel = new User()

Vue.use(
  userPlugin,
  {
    apiRoutes,
    axios,
    credentialsParamMapper,
    logoutCallback,
    profileModel,
    router,
    store,
    userModel,
    vueAuthenticateOptions,
  }
)

Options

| Option | Description | Type | Default Value | |:-----------------------|:----------------------------------------------|:---------|:--------------------| | apiRoutes | API endpoints related to user authentication | Object | | | axios | The instance of axios used by app | Object | | | credentialsParamMapper | Overridden credential keys to API keys mapper | Object | | | loginRouteName | The name of the login route | String | 'login' | | logoutCallback | Callback to invoke while logging out | String | | | profileModel | The stub instance of profile model | Object | UAMProfile object | | redirectAfterLogout | The name of route to redirect to after user logs out | String | 'home' | | router | The registered router instance | Object | | | store | The Vuex store to use | Object | | | userModel | The stub instance of user model | Object | UAMUser object | | vueAuthenticateOptions | Social login provider options | Object | |

Route meta fields

This plugin uses following meta fields in beforeEach guard of router instance. These can be specified when defining a route in the app

| Meta field key | Description | Type | Value | |:-----------------|:-----------------------------------------------------------------------------------|:--------|:-------| | redirectOnExpire | Redirect to loginRouteName when both access token and refresh token gets expired | Boolean | true | | requiresAuth | Make route accessible to only authenticated user. Redirects to loginRouteName when user is not logged in. | Boolean | true |

Social login

For social login, install and setup vue-authenticate in your app as follows:

# main.js

let vueAuthenticateOptions = {
  baseUrl: process.env.API_BASE_URL, // API domain

  providers: {
    facebook: {
      clientId: process.env.FACEBOOK_CLIENT_ID,
      redirectUri: window.location.origin + '/'
    },
    github: {
      clientId: process.env.GITHUB_CLIENT_ID,
      redirectUri: window.location.origin
    },
    google: {
      clientId: process.env.GOOGLE_CLIENT_ID,
      redirectUri: window.location.origin
    },
    linkedin: {
      clientId: process.env.LINKEDIN_CLIENT_ID,
      redirectUri: window.location.origin
    }
  }
}

Vue.use(User, { store, router, loginRouteName: 'login', vueAuthenticateOptions, axios })

Configure client ID of each platform that you want to enable on config/{environment}.env.js of your app.

Then you can render login component with various social login links by passing respective prop as follows:

<uam-login facebook github google linkedin></uam-login>

For login form on modal dialog

When mounting component if refresh token is expired(with Vue.$uamAuth.isRefreshExpired()) or on axios request if error occurs with 401 Unauthorized status, you can authenticate using uam-login component as modal body inside your modal.

You can set no-redirect prop to remain on current page after logging through modal dialog. You can listen to login:success event and handle closing modal dialog, re-requesting endpoint etc. on your event handler.

<uam-login @login:success="hideLoginModal" no-redirect></uam-login>

Component Reference

<uam-login>

Properties

| Property | Description | Type | Default Value | |:------------|:--------------------------------------|:--------|:----------------------------------| | facebook | Facebook login button | Boolean | false | | github | Github login button | Boolean | false | | google | Google login button | Boolean | false | | linkedin | Linkedin login button | Boolean | false | | redirect | Route to redirect to after login. false for no redirect. | Boolean, Object, String | 'home' | | requestPasswordReset | Password reset request route. false to not show link | Boolean, Object, String | 'request_password_reset' | | showPasswordButton | Display password button | Boolean | false | | title | Title to show as heading | String | translated user.login.title key |

Events

| Event | Description | |:--------------|:-----------------------------------| | login:error | emits after error while logging in | | login:start | emits before invoking login | | login:success | emits after successful login |

<uam-profile>

Properties

| Property | Description | Type | Default Value | |:-------------|:---------------------------------------|:--------|:--------------| | max-password | Maximum password length | Number | 255 | | min-password | Minimum password length | Number | 6 | | update-url | API url to update current user profile | String | |

Events

| Event | Description | |:-------------------|:-------------------------------------------------------| | before-update | emits before invoking update | | unauthorized-error | emits if response status is 401 while refreshing token | | update-error | emits after error while updating profile | | update-success | emits after successful profile update |

<uam-request-password-reset>

Properties

| Property | Description | Type | Default Value | |:---------|:--------------------------------------------|:---------------|:---------------| | login | Route to go back to login | Object, String | 'login' | | redirect | Route to redirect to after requesting reset | Object, String | 'home' | | title | Title to show as heading | String | translated 'user.requestPasswordReset.title' key |

Events

| Event | Description | |:-------------------------------|:-----------------------------------| | request-password-reset:error | emits after error while requesting password reset | | request-password-reset:start | emits before requesting password reset | | request-password-reset:success | emits after successfully requesting password reset |

<uam-reset-password>

Properties

| Property | Description | Type | Default Value | |:----------|:-------------------------------|:---------------|:----------------------------------| | max-password | Maximum password length | Number | 255 | | min-password | Minimum password length | Number | 6 | | redirect | Route to redirect to after resetting password | Object, String | 'login' | | reset-url | API url to reset password | String | | | title | Title to show as heading | String | translated 'user.resetPassword.title' key |

Events

| Event | Description | |:-----------------------|:-----------------------------------| | reset-password:error | emits after error while resetting password | | reset-password:start | emits before invoking password reset | | reset-password:success | emits after successful password reset |

<uam-user-enable>

Properties

| Property | Description | Type | Default Value | |:-----------|:-----------------------------------------|:--------|:-----------------| | enable-url | API url to enable user | String | | | redirect | Route to redirect to after enabling user | Object, String | 'home' |

Events

| Event | Description | |:--------------------|:---------------------------------------| | user-enable:error | emits after error while enabling user | | user-enable:start | emits before starting to enable user | | user-enable:success | emits after successfully enabling user |

<uam-user-menu>

Properties

| Property | Description | Type | Default Value | |:---------|:-------------------------------|:---------------|:-----------------------------------| | divider | Show dropdown divider | Boolean | true | | login | Login route | Object, String | 'login' | | profile | Profile route | Object, String | | | right | Right align dowpdown menu | Boolean | false | | signup | Signup route | Object, String | 'signup' | | welcome | Content to show on menu button | String | translated user.menu.welcome key |

<uam-signup>

Properties

| Property | Description | Type | Default Value | |:------------|:--------------------------------------|:--------|:-----------------------------------| | max-password | Maximum password length | Number | 255 | | min-password | Minimum password length | Number | 6 | | redirect | Route to redirect to after signup. | String, Object | 'home' | | title | Title to show as heading | String | translated user.signup.title key |

Events

| Event | Description | |:--------------|:------------------------------------| | signup:error | emits after error while signing up | | signup:start | emits before invoking signup | | signup:success | emits after successful signup |