Code Monkey home page Code Monkey logo

loggedin-mixin's Introduction

loggedin-mixin

Install

$ meteor add tunifight:loggedin-mixin

Usage

// Method definition
const method = new ValidatedMethod({
  name, // DDP method name
  mixins : [LoggedInMixin],
  checkLoggedInError: {
    error: 'notLogged',
    message: 'You need to be logged in to call this method',//Optional
    reason: 'You need to login' //Optional
  },
  validate, // argument validation
  run // Method body
});

The LoggedInMixin mixin requires the new checkLoggedInError option which includes the required informations to throw an Error. Note that message and reason are optional.

Roles check

If you are using alanning:roles package in your application, you can add roles check to the basic logged-in check.

For that, you need to add the new checkRoles option which includes the required informations about roles, group and the error to throw.

// Method definition
const method = new ValidatedMethod({
  name, // DDP method name
  mixins : [LoggedInMixin],
  checkRoles: {
    roles: ['admin'],
    group: 'group1', // Optional
    rolesError: {
      error: 'not-allowed',
      message: 'You are not allowed to call this method',//Optional
      reason: 'You are not allowed to call this method' //Optional
    }
  }
  checkLoggedInError: {
    error: 'notLogged',
    message: 'You need to be logged in to call this method',//Optional
    reason: 'You need to login' //Optional
  },
  validate, // argument validation
  run // Method body
});

loggedin-mixin's People

Contributors

chris-r3 avatar nabiltntn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

loggedin-mixin's Issues

Error.details

Looks like now Meteor.Error have error, reason and details fields.

Make checkLoggedInError optional

What are your thoughts on making checkLoggedInError optional when defining ValidatedMethod and instead providing a default error? I think this would be useful since the error message for a user not being logged in would typically be the same throughout an app.

able to bypass this meteor.call

running meteor.call from the console it seems i'm able to bypass this, and don't receive any errors, can you confirm?

here is my method defination

import SimpleSchema from 'simpl-schema';

import { Meteor } from 'meteor/meteor';
import { ValidatedMethod } from 'meteor/mdg:validated-method';
import { LoggedInMixin } from 'meteor/tunifight:loggedin-mixin';
// import { Roles } from 'meteor/alanning:roles';

export const available = new ValidatedMethod({
  name: 'v1/driver.isAvailable',
  mixim: [LoggedInMixin],
  checkLoggedInError: {
    error: '401',
    meeage: 'You need to login',
    reason: 'Not authorised',
  },
  checkRoles: {
    roles: ['driver'],
    group: Roles.GLOBAL_GROUP,
    rolesError: {
      error: '403',
      message: 'You are not allowed to call this method',
      reason: 'forbidden',
    },
  },
  validate: new SimpleSchema({
    status: { type: Boolean },
  }).validator(),
  run({ status }) {
    if (Meteor.isServer) {
      import { isAvailable } from '/imports/users/';

      return isAvailable({ id: this.userId, status });
    }
  },
});

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.