mirror of
https://github.com/strapi/strapi.git
synced 2025-11-03 19:36:20 +00:00
Merge branch 'user-permissions' of https://github.com/strapi/strapi into user-permissions
This commit is contained in:
commit
7b84df6fbc
@ -217,27 +217,25 @@
|
||||
.inputDate{
|
||||
> div:first-of-type{
|
||||
&:before{
|
||||
content: '\f073';
|
||||
position: absolute;
|
||||
left: 1px; top: 1px;
|
||||
content: '\f073';
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background: #FAFAFB;
|
||||
border-radius: 3px 0px 0px 3px;
|
||||
background: #FAFAFB;
|
||||
color: #B3B5B9;
|
||||
text-align: center;
|
||||
font-family: 'FontAwesome';
|
||||
font-size: 1.4rem;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
color: #B3B5B9;
|
||||
-webkit-font-smoothing: none;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
padding-left: 42px;
|
||||
|
||||
box-shadow: 0px 1px 1px rgba(104, 118, 142, 0.05);
|
||||
|
||||
&:focus{
|
||||
outline: none;
|
||||
}
|
||||
@ -263,26 +261,23 @@
|
||||
|
||||
.inputToggleButtons {
|
||||
padding-top: 9px;
|
||||
|
||||
> button {
|
||||
width: 5.3rem;
|
||||
height: 3.4rem;
|
||||
margin-bottom: 2.8rem;
|
||||
padding: 0;
|
||||
line-height: 3.4rem;
|
||||
border: 1px solid #E3E9F3;
|
||||
border-radius: 0.25rem;
|
||||
|
||||
margin-bottom: 2.8rem;
|
||||
|
||||
// color
|
||||
color: #CED3DB;
|
||||
background-color: white;
|
||||
// text
|
||||
box-shadow: 0px 1px 1px rgba(104, 118, 142, 0.05);
|
||||
font-weight: 600;
|
||||
font-size: 1.2rem;
|
||||
letter-spacing: 0.1rem;
|
||||
font-family: Lato;
|
||||
line-height: 3.4rem;
|
||||
cursor: pointer;
|
||||
box-shadow: 0px 1px 1px rgba(104, 118, 142, 0.05);
|
||||
&:first-of-type {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
@ -7,6 +7,18 @@ const parse = JSON.parse;
|
||||
const stringify = JSON.stringify;
|
||||
|
||||
const auth = {
|
||||
clear(key) {
|
||||
if (localStorage && localStorage.getItem(key)) {
|
||||
return localStorage.removeItem(key);
|
||||
}
|
||||
|
||||
if (sessionStorage && sessionStorage.getItem(key)) {
|
||||
return sessionStorage.removeItem(key);
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
clearAppStorage() {
|
||||
if (localStorage) {
|
||||
return localStorage.clear();
|
||||
@ -20,85 +32,57 @@ const auth = {
|
||||
},
|
||||
|
||||
clearToken(tokenKey = TOKEN_KEY) {
|
||||
if (localStorage) {
|
||||
return localStorage.removeItem(tokenKey);
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.removeItem(tokenKey);
|
||||
}
|
||||
|
||||
return null;
|
||||
return auth.clear(tokenKey);
|
||||
},
|
||||
|
||||
clearUserInfo(userInfo = USER_INFO) {
|
||||
if (localStorage) {
|
||||
return localStorage.removeItem(userInfo);
|
||||
return auth.clear(userInfo);
|
||||
},
|
||||
|
||||
get(key) {
|
||||
if (localStorage && localStorage.getItem(key)) {
|
||||
return parse(localStorage.getItem(key)) || null;
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.removeItem(userInfo);
|
||||
if (sessionStorage && sessionStorage.getItem(key)) {
|
||||
return parse(sessionStorage.getItem(key)) || null;
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
getToken(tokenKey = TOKEN_KEY) {
|
||||
if (localStorage && localStorage.getItem(tokenKey)) {
|
||||
return parse(localStorage.getItem(tokenKey)) || null;
|
||||
}
|
||||
|
||||
if (sessionStorage && sessionStorage.getItem(tokenKey)) {
|
||||
return parse(sessionStorage.getItem(tokenKey)) || null;
|
||||
}
|
||||
|
||||
return null;
|
||||
return auth.get(tokenKey);
|
||||
},
|
||||
|
||||
getUserInfo(userInfo = USER_INFO) {
|
||||
if (localStorage && localStorage.getItem(userInfo)) {
|
||||
return parse(localStorage.getItem(userInfo)) || null;
|
||||
}
|
||||
|
||||
if (sessionStorage && sessionStorage.getItem(userInfo)) {
|
||||
return parse(sessionStorage.getItem(userInfo)) || null;
|
||||
}
|
||||
|
||||
return null;
|
||||
return auth.get(userInfo);
|
||||
},
|
||||
|
||||
setToken(value = '', isLocalStorage = false, tokenKey = TOKEN_KEY) {
|
||||
set(value, key, isLocalStorage) {
|
||||
if (isEmpty(value)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isLocalStorage && localStorage) {
|
||||
console.log('ok')
|
||||
return localStorage.setItem(tokenKey, stringify(value));
|
||||
}
|
||||
|
||||
if (sessionStorage && sessionStorage) {
|
||||
return sessionStorage.setItem(tokenKey, stringify(value));
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
setUserInfo(value = '', isLocalStorage = false, userInfo = USER_INFO) {
|
||||
if (isEmpty(value)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isLocalStorage && localStorage) {
|
||||
return localStorage.setItem(userInfo, stringify(value));
|
||||
return localStorage.setItem(key, stringify(value));
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.setItem(userInfo, stringify(value));
|
||||
return sessionStorage.setItem(key, stringify(value));
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
|
||||
setToken(value = '', isLocalStorage = false, tokenKey = TOKEN_KEY) {
|
||||
return auth.set(value, tokenKey, isLocalStorage);
|
||||
},
|
||||
|
||||
setUserInfo(value = '', isLocalStorage = false, userInfo = USER_INFO) {
|
||||
return auth.set(value, userInfo, isLocalStorage);
|
||||
},
|
||||
}
|
||||
|
||||
export default auth;
|
||||
|
||||
@ -59,6 +59,13 @@ export function setForm(formType, email) {
|
||||
email,
|
||||
};
|
||||
break;
|
||||
case 'reset-password':
|
||||
data = {
|
||||
password: '',
|
||||
passwordConfirmation: '',
|
||||
code: email,
|
||||
};
|
||||
break;
|
||||
default:
|
||||
data = {};
|
||||
}
|
||||
@ -76,10 +83,10 @@ export function submit() {
|
||||
};
|
||||
}
|
||||
|
||||
export function submitError(errors) {
|
||||
export function submitError(formErrors) {
|
||||
return {
|
||||
type: SUBMIT_ERROR,
|
||||
errors,
|
||||
formErrors,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -66,6 +66,20 @@
|
||||
"label": "users-permissions.Auth.form.register-success.email.label",
|
||||
"placeholder": "users-permissions.Auth.form.register-success.email.placeholder"
|
||||
}
|
||||
],
|
||||
"reset-password": [
|
||||
{
|
||||
"customBootstrapClass": "col-md-12",
|
||||
"name": "password",
|
||||
"type": "password",
|
||||
"label": "users-permissions.Auth.form.register.password.label"
|
||||
},
|
||||
{
|
||||
"customBootstrapClass": "col-md-12",
|
||||
"name": "passwordConfirmation",
|
||||
"type": "password",
|
||||
"label": "users-permissions.Auth.form.register.confirmPassword.label"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ import { connect } from 'react-redux';
|
||||
import { bindActionCreators, compose } from 'redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
import { findIndex, get, isBoolean, isEmpty, map } from 'lodash';
|
||||
import { findIndex, get, isBoolean, isEmpty, map, replace } from 'lodash';
|
||||
import cn from 'classnames';
|
||||
|
||||
// Logo
|
||||
@ -39,17 +39,20 @@ import styles from './styles.scss';
|
||||
|
||||
export class AuthPage extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
||||
componentDidMount() {
|
||||
this.props.setForm(this.props.match.params.authType, this.props.match.params.id);
|
||||
const params = this.props.location.search ? replace(this.props.location.search, '?code=', '') : this.props.match.params.id;
|
||||
this.props.setForm(this.props.match.params.authType, params);
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps) {
|
||||
if (this.props.match.params.authType !== nextProps.match.params.authType) {
|
||||
this.props.setForm(nextProps.match.params.authType, nextProps.match.params.id);
|
||||
const params = nextProps.location.search ? replace(nextProps.location.search, '?code=', '') : nextProps.match.params.id;
|
||||
this.props.setForm(nextProps.match.params.authType, params);
|
||||
}
|
||||
|
||||
if (nextProps.submitSuccess) {
|
||||
switch (this.props.match.params.authType) {
|
||||
case 'login':
|
||||
case 'reset-password':
|
||||
this.props.history.push('/');
|
||||
break;
|
||||
case 'register':
|
||||
@ -187,6 +190,7 @@ AuthPage.propTypes = {
|
||||
didCheckErrors: PropTypes.bool.isRequired,
|
||||
formErrors: PropTypes.array.isRequired,
|
||||
history: PropTypes.object.isRequired,
|
||||
location: PropTypes.object.isRequired,
|
||||
match: PropTypes.object.isRequired,
|
||||
modifiedData: PropTypes.object.isRequired,
|
||||
onChangeInput: PropTypes.func.isRequired,
|
||||
|
||||
@ -9,6 +9,7 @@ import {
|
||||
ON_CHANGE_INPUT,
|
||||
SET_ERRORS,
|
||||
SET_FORM,
|
||||
SUBMIT_ERROR,
|
||||
SUBMIT_SUCCEEDED,
|
||||
} from './constants';
|
||||
|
||||
@ -26,6 +27,7 @@ function authPageReducer(state = initialState, action) {
|
||||
return state
|
||||
.updateIn(['modifiedData', action.key], () => action.value);
|
||||
case SET_ERRORS:
|
||||
case SUBMIT_ERROR:
|
||||
return state
|
||||
.set('didCheckErrors', !state.get('didCheckErrors'))
|
||||
.set('formErrors', List(action.formErrors));
|
||||
|
||||
@ -1,29 +1,66 @@
|
||||
import { set } from 'lodash';
|
||||
import { call, fork, takeLatest, put, select } from 'redux-saga/effects';
|
||||
import auth from 'utils/auth';
|
||||
import request from 'utils/request';
|
||||
|
||||
import { makeSelectFormType, makeSelectModifiedData } from './selectors';
|
||||
import { submitSucceeded } from './actions';
|
||||
import { submitError, submitSucceeded } from './actions';
|
||||
import { SUBMIT } from './constants';
|
||||
|
||||
export function* submitForm() {
|
||||
try {
|
||||
const formType = yield select(makeSelectFormType());
|
||||
const body = yield select(makeSelectModifiedData());
|
||||
let requestURL;
|
||||
|
||||
if (formType === 'login' || formType === 'register') {
|
||||
const endPoint = formType === 'login' ? '' : '/register';
|
||||
const response = yield call(request, `/auth/local${endPoint}`, { method: 'POST', body });
|
||||
switch (formType) {
|
||||
case 'login':
|
||||
requestURL = '/auth/local';
|
||||
break;
|
||||
case 'register':
|
||||
requestURL = '/auth/local/register';
|
||||
break;
|
||||
case 'reset-password':
|
||||
requestURL = '/auth/reset-password';
|
||||
break;
|
||||
case 'forgot-password':
|
||||
requestURL = '/auth/forgot-password';
|
||||
set(body, 'url', `${strapi.backendURL}/admin/plugins/users-permissions/auth/reset-password`);
|
||||
break;
|
||||
default:
|
||||
|
||||
if (response.jwt) {
|
||||
yield call(auth.setToken, response.jwt, body.rememberMe);
|
||||
yield call(auth.setUserInfo, response.user, body.rememberMe);
|
||||
}
|
||||
}
|
||||
|
||||
const response = yield call(request, requestURL, { method: 'POST', body });
|
||||
|
||||
if (response.jwt) {
|
||||
yield call(auth.setToken, response.jwt, body.rememberMe);
|
||||
yield call(auth.setUserInfo, response.user, body.rememberMe);
|
||||
}
|
||||
|
||||
if (formType === 'forgot-password') {
|
||||
strapi.notification.info('The email has been sent');
|
||||
}
|
||||
|
||||
yield put(submitSucceeded());
|
||||
} catch(error) {
|
||||
strapi.notification.error('An error occured');
|
||||
const formType = yield select(makeSelectFormType());
|
||||
const errors = [{ id: error.response.payload.message }];
|
||||
|
||||
let formErrors;
|
||||
|
||||
switch (formType) {
|
||||
case 'forgot-password':
|
||||
formErrors = [{ name: 'email', errors }];
|
||||
break;
|
||||
// TODO : handle other error type;
|
||||
default:
|
||||
|
||||
}
|
||||
|
||||
strapi.notification.error(error.response.payload.message);
|
||||
|
||||
yield put(submitError(formErrors));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
*
|
||||
*/
|
||||
import { fromJS, List, Map } from 'immutable';
|
||||
import { concat, get } from 'lodash';
|
||||
import { get } from 'lodash';
|
||||
import {
|
||||
ADD_USER,
|
||||
GET_PERMISSIONS,
|
||||
@ -67,8 +67,8 @@ export function onCancel() {
|
||||
}
|
||||
|
||||
export function onChangeInput({ target }) {
|
||||
const keys = concat(['modifiedData'], target.name.split('.'));
|
||||
|
||||
const keys = ['modifiedData'].concat(target.name.split('.'));
|
||||
|
||||
return {
|
||||
type: ON_CHANGE_INPUT,
|
||||
keys,
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
{
|
||||
"Auth.form.button.register-success": "Send again",
|
||||
"Auth.form.button.forgot-password": "Send again",
|
||||
"Auth.form.button.forgot-password": "Send email",
|
||||
"Auth.form.button.reset-password": "Change password",
|
||||
"Auth.form.button.login": "Log in",
|
||||
"Auth.form.button.register": "Ready to start",
|
||||
|
||||
@ -83,6 +84,7 @@
|
||||
|
||||
"notification.error.delete": "An error occured while trying to delete the item",
|
||||
"notification.error.fetch": "An error occured while trying to fetch data",
|
||||
"notification.info.emailSent": "The email has been sent",
|
||||
"notification.success.delete": "The item has been deleted",
|
||||
|
||||
"plugin.description": "Protect your API with a full-authentication process",
|
||||
@ -93,21 +95,21 @@
|
||||
"Plugins.header.title": "Permissions",
|
||||
"Plugins.header.description": "Only actions bound by a route are listed below.",
|
||||
|
||||
"popUpForm.button.cancel": "Cancel",
|
||||
"popUpForm.button.save": "Save",
|
||||
"popUpForm.header.add.providers": "Add New Provider",
|
||||
"popUpForm.header.edit.email-templates": "Edit Email Templates",
|
||||
"popUpForm.header.edit.providers": "Edit Provider",
|
||||
"popUpForm.inputSelect.providers.label": "Choose the provider",
|
||||
"popUpForm.inputToggle.providers.label": "Enable",
|
||||
"popUpForm.inputToggle.providers.description": "If disabled, the users won't be able to use this provider.",
|
||||
"popUpForm.inputText.shipperName.label": "Shipper name",
|
||||
"popUpForm.inputEmail.shipperEmail.label": "Shipper email",
|
||||
"popUpForm.inputEmail.responseEmail.label": "Response email",
|
||||
"popUpForm.inputText.emailObject.label": "Object",
|
||||
"popUpForm.inputText.emailObject.placeholder": "Please confirm your email address for %APP_NAME%",
|
||||
"popUpForm.inputTextArea.message.label": "Message",
|
||||
"popUpForm.inputTextArea.message.placeholder": "<p>Please click on this link to validate your account</p>",
|
||||
"popUpForm.inputEmail.placeholder": "johndoe@gmail.com",
|
||||
"popUpForm.inputText.shipperName.placeholder": "John Doe"
|
||||
"PopUpForm.button.cancel": "Cancel",
|
||||
"PopUpForm.button.save": "Save",
|
||||
"PopUpForm.header.add.providers": "Add New Provider",
|
||||
"PopUpForm.header.edit.email-templates": "Edit Email Templates",
|
||||
"PopUpForm.header.edit.providers": "Edit Provider",
|
||||
"PopUpForm.inputSelect.providers.label": "Choose the provider",
|
||||
"PopUpForm.inputToggle.providers.label": "Enable",
|
||||
"PopUpForm.inputToggle.providers.description": "If disabled, the users won't be able to use this provider.",
|
||||
"PopUpForm.inputText.shipperName.label": "Shipper name",
|
||||
"PopUpForm.inputEmail.shipperEmail.label": "Shipper email",
|
||||
"PopUpForm.inputEmail.responseEmail.label": "Response email",
|
||||
"PopUpForm.inputText.emailObject.label": "Object",
|
||||
"PopUpForm.inputText.emailObject.placeholder": "Please confirm your email address for %APP_NAME%",
|
||||
"PopUpForm.inputTextArea.message.label": "Message",
|
||||
"PopUpForm.inputTextArea.message.placeholder": "<p>Please click on this link to validate your account</p>",
|
||||
"PopUpForm.inputEmail.placeholder": "johndoe@gmail.com",
|
||||
"PopUpForm.inputText.shipperName.placeholder": "John Doe"
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
{
|
||||
"Auth.form.button.register-success": "Envoyer à nouveau",
|
||||
"Auth.form.button.forgot-password": "Envoyer à nouveau",
|
||||
"Auth.form.button.reset-password": "Changez votre mot de passe",
|
||||
"Auth.form.button.login": "Se connecter",
|
||||
"Auth.form.button.register": "Prêt à commencer",
|
||||
|
||||
@ -84,6 +85,7 @@
|
||||
|
||||
"notification.error.delete": "Une erreur est survenue en essayant de supprimer cet élément",
|
||||
"notification.error.fetch": "Une erreur est survenue en essayant de récupérer les données",
|
||||
"notification.info.emailSent": "L'email a été envoyé",
|
||||
"notification.success.delete": "L'élément a bien été supprimé",
|
||||
|
||||
"plugin.description": "Protegez votre API avec un système d'authentification complet",
|
||||
|
||||
@ -2,230 +2,6 @@
|
||||
"0": {
|
||||
"description": "",
|
||||
"name": "",
|
||||
"permissions": {
|
||||
"content-manager": {
|
||||
"controllers": {
|
||||
"contentmanager": {
|
||||
"models": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"find": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"count": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"findOne": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"create": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"update": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"delete": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content-type-builder": {
|
||||
"controllers": {
|
||||
"contenttypebuilder": {
|
||||
"getModels": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"getModel": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"getConnections": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"createModel": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"updateModel": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"deleteModel": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"autoReload": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"checkTableExists": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings-manager": {
|
||||
"controllers": {
|
||||
"settingsmanager": {
|
||||
"menu": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"environments": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"languages": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"databases": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"database": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"databaseModel": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"get": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"update": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"createLanguage": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"deleteLanguage": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"createDatabase": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"updateDatabase": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"deleteDatabase": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"autoReload": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"users-permissions": {
|
||||
"controllers": {
|
||||
"auth": {
|
||||
"callback": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"register": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"forgotPassword": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"changePassword": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
},
|
||||
"user": {
|
||||
"find": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"findOne": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"create": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"update": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"destroy": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
},
|
||||
"userspermissions": {
|
||||
"getPermissions": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"getRole": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"index": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"init": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
},
|
||||
"identity": {
|
||||
"enabled": false,
|
||||
"policy": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"toto": {
|
||||
"controllers": {}
|
||||
}
|
||||
}
|
||||
"permissions": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,6 +60,15 @@
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/auth/reset-password",
|
||||
"handler": "Auth.changePassword",
|
||||
"config": {
|
||||
"policies": [],
|
||||
"prefix": ""
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"method": "GET",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user