mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-15 09:54:23 +01:00
163 lines
5.2 KiB
JavaScript
163 lines
5.2 KiB
JavaScript
/* eslint-disable
|
|
camelcase,
|
|
no-return-assign,
|
|
no-undef,
|
|
*/
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
// Fix any style issues and re-enable lint.
|
|
/*
|
|
* decaffeinate suggestions:
|
|
* DS101: Remove unnecessary use of Array.from
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
'use strict';
|
|
|
|
/* COMMON CODE */
|
|
|
|
// list of supported authentication methods
|
|
const METHODS = {
|
|
DatabaseProvider: 'local_database',
|
|
OAuth2Provider: 'o_auth2',
|
|
OpenIdConnectProvider: 'openid_connect'
|
|
};
|
|
|
|
/**
|
|
* Iterate through the provided array and return the index of the requested element
|
|
* @param elements {Array<{id:*}>}
|
|
* @param id {*} id of the element to retrieve in the list
|
|
* @returns {number} index of the requested element, in the provided array
|
|
*/
|
|
const findIdxById = function (elements, id) {
|
|
return (elements.map(function (elem) { return elem.id; })).indexOf(id);
|
|
};
|
|
|
|
/**
|
|
* Page listing all authentication providers
|
|
*/
|
|
Application.Controllers.controller('AuthentificationController', ['$scope', '$state', '$rootScope', 'dialogs', 'growl', 'authProvidersPromise', 'AuthProvider', '_t',
|
|
function ($scope, $state, $rootScope, dialogs, growl, authProvidersPromise, AuthProvider, _t) {
|
|
/* PUBLIC SCOPE */
|
|
|
|
// full list of authentication providers
|
|
$scope.providers = authProvidersPromise;
|
|
|
|
/**
|
|
* Translate the classname into an explicit textual message
|
|
* @param type {string} Ruby polymorphic model classname
|
|
* @returns {string}
|
|
*/
|
|
$scope.getType = function (type) {
|
|
const text = METHODS[type];
|
|
if (typeof text !== 'undefined') {
|
|
return _t(`app.admin.members.authentication_form.${text}`);
|
|
} else {
|
|
return _t('app.admin.members.authentication_form.unknown') + type;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Translate the status string into an explicit textual message
|
|
* @param status {string} active | pending | previous
|
|
* @returns {string}
|
|
*/
|
|
$scope.getState = function (status) {
|
|
switch (status) {
|
|
case 'active': return _t('app.admin.members.authentication_form.active');
|
|
case 'pending': return _t('app.admin.members.authentication_form.pending');
|
|
case 'previous': return _t('app.admin.members.authentication_form.previous_provider');
|
|
default: return _t('app.admin.members.authentication_form.unknown') + status;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Ask for confirmation then delete the specified provider
|
|
* @param providers {Array} full list of authentication providers
|
|
* @param provider {Object} provider to delete
|
|
*/
|
|
$scope.destroyProvider = function (providers, provider) {
|
|
dialogs.confirm(
|
|
{
|
|
resolve: {
|
|
object () {
|
|
return {
|
|
title: _t('app.admin.members.authentication_form.confirmation_required'),
|
|
msg: _t('app.admin.members.authentication_form.do_you_really_want_to_delete_the_TYPE_authentication_provider_NAME', { TYPE: $scope.getType(provider.providable_type), NAME: provider.name })
|
|
};
|
|
}
|
|
}
|
|
},
|
|
function () {
|
|
// the admin has confirmed, delete
|
|
AuthProvider.delete(
|
|
{ id: provider.id },
|
|
function () {
|
|
providers.splice(findIdxById(providers, provider.id), 1);
|
|
growl.success(_t('app.admin.members.authentication_form.authentication_provider_successfully_deleted'));
|
|
},
|
|
function () { growl.error(_t('app.admin.members.authentication_form.an_error_occurred_unable_to_delete_the_specified_provider')); }
|
|
);
|
|
}
|
|
);
|
|
};
|
|
}
|
|
|
|
]);
|
|
|
|
/**
|
|
* Page to add a new authentication provider
|
|
*/
|
|
Application.Controllers.controller('NewAuthenticationController', ['$scope', '$state', 'growl',
|
|
function ($scope, $state, growl) {
|
|
/**
|
|
* Shows a success message forwarded from a child react component
|
|
*/
|
|
$scope.onSuccess = function (message) {
|
|
growl.success(message);
|
|
$scope.cancel();
|
|
};
|
|
|
|
/**
|
|
* Callback triggered by react components
|
|
*/
|
|
$scope.onError = function (message) {
|
|
growl.error(message);
|
|
};
|
|
|
|
$scope.cancel = function () { $state.go('app.admin.members'); };
|
|
}
|
|
]);
|
|
|
|
/**
|
|
* Page to edit an already added authentication provider
|
|
*/
|
|
Application.Controllers.controller('EditAuthenticationController', ['$scope', '$state', 'growl', 'providerPromise',
|
|
function ($scope, $state, growl, providerPromise) {
|
|
// parameters of the currently edited authentication provider
|
|
$scope.provider = cleanProvider(providerPromise);
|
|
|
|
/**
|
|
* Shows a success message forwarded from a child react component
|
|
*/
|
|
$scope.onSuccess = function (message) {
|
|
growl.success(message);
|
|
};
|
|
|
|
/**
|
|
* Callback triggered by react components
|
|
*/
|
|
$scope.onError = function (message) {
|
|
growl.error(message);
|
|
};
|
|
|
|
$scope.cancel = function () { $state.go('app.admin.members'); };
|
|
|
|
// prepare the provider for the react-hook-form
|
|
function cleanProvider (provider) {
|
|
delete provider.$promise;
|
|
delete provider.$resolved;
|
|
return provider;
|
|
}
|
|
}
|
|
]);
|