UNPKG

@bennerinformatics/ember-fw-gc

Version:

A set of components, controllers, routes, and helpers used in all Group-Control managed FW App System applications

53 lines (47 loc) 1.86 kB
import Mixin from '@ember/object/mixin'; import {inject as injectService} from '@ember/service'; /** * Mixin that encapsulates some of the route authentication behavior. * * If the user is logged into an app, but has no app roles, this will redirect them to index. * This is as opposed to the default ember-simple-auth logic which only checks logged in, not roles * * Usage: (in a routes file) * ```javascript * import Route from '@ember/routing/route'; * import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin'; * import AuthCheckMixin from '@bennerinformatics/ember-fw-gc/mixins/auth-check'; * import AuthRouteMixin from '@bennerinformatics/ember-fw-gc/mixins/auth-route'; * * export default Route.extend(AuthenticatedRouteMixin, AuthCheckMixin, AuthRouteMixin, { * // your code here * }); * ``` * This mixin is used by the [AuthRoute](AuthRoute.html) in your app, which means that any route which extends `AuthRoute` in the * Informatics Apps incorporates this mixin. * * @public * @class AuthRouteMixin * @extends Ember.Mixin * @module Mixins */ export default Mixin.create({ currentUser: injectService(), session: injectService(), /** * Route to transition to if the check (for authentication and having roles) fails. This should ordinarily be left to the default, but could be overwritten if the need arose. * * @public * @property rejectedRoute * @type {String} * @default index */ rejectedRoute: 'index', beforeModel(transition) { let superResult = this._super(transition); if (this.get('session.isAuthenticated') && !this.get('currentUser.hasRoles')) { return this.transitionTo(this.get('rejectedRoute')); } return superResult; } });