mirror of
https://github.com/strapi/strapi.git
synced 2025-12-27 15:13:21 +00:00
Add login dynamic and auth file
This commit is contained in:
parent
d9e3d80a22
commit
04689919ab
@ -0,0 +1,104 @@
|
||||
import { isEmpty } from 'lodash';
|
||||
|
||||
const TOKEN_KEY = 'jwtToken';
|
||||
const USER_INFO = 'userInfo';
|
||||
|
||||
const parse = JSON.parse;
|
||||
const stringify = JSON.stringify;
|
||||
|
||||
const auth = {
|
||||
clearAppStorage() {
|
||||
if (localStorage) {
|
||||
return localStorage.clear();
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.clear();
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
clearToken(tokenKey = TOKEN_KEY) {
|
||||
if (localStorage) {
|
||||
return localStorage.removeItem(tokenKey);
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.removeItem(tokenKey);
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
|
||||
clearUserInfo(userInfo = USER_INFO) {
|
||||
if (localStorage) {
|
||||
return localStorage.removeItem(userInfo);
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.removeItem(userInfo);
|
||||
}
|
||||
|
||||
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;
|
||||
},
|
||||
|
||||
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;
|
||||
},
|
||||
|
||||
setToken(value = '', isLocalStorage = false, tokenKey = TOKEN_KEY) {
|
||||
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));
|
||||
}
|
||||
|
||||
if (sessionStorage) {
|
||||
return sessionStorage.setItem(userInfo, stringify(value));
|
||||
}
|
||||
|
||||
return null;
|
||||
},
|
||||
}
|
||||
|
||||
export default auth;
|
||||
@ -66,6 +66,7 @@ export function setForm(formType, email) {
|
||||
return {
|
||||
type: SET_FORM,
|
||||
data,
|
||||
formType,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
const initialState = fromJS({
|
||||
didCheckErrors: false,
|
||||
formErrors: List([]),
|
||||
formType: 'login',
|
||||
modifiedData: Map({}),
|
||||
submitSuccess: false,
|
||||
});
|
||||
@ -31,6 +32,7 @@ function authPageReducer(state = initialState, action) {
|
||||
case SET_FORM:
|
||||
return state
|
||||
.set('formErrors', List([]))
|
||||
.set('formType', action.formType)
|
||||
.set('submitSuccess', false)
|
||||
.set('modifiedData', Map(action.data));
|
||||
case SUBMIT_SUCCEEDED:
|
||||
|
||||
@ -1,13 +1,26 @@
|
||||
import { fork, takeLatest, put } from 'redux-saga/effects';
|
||||
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 { SUBMIT } from './constants';
|
||||
|
||||
export function* submitForm() {
|
||||
try {
|
||||
// TODO dynamic
|
||||
yield put(submitSucceeded());
|
||||
const formType = yield select(makeSelectFormType());
|
||||
const body = yield select(makeSelectModifiedData());
|
||||
|
||||
if (formType === 'login') {
|
||||
const response = yield call(request, '/auth/local', { method: 'POST', body });
|
||||
|
||||
if (response.jwt) {
|
||||
yield call(auth.setToken, response.jwt, body.rememberMe);
|
||||
yield call(auth.setUserInfo, response.user, body.rememberMe);
|
||||
}
|
||||
}
|
||||
|
||||
yield put(submitSucceeded());
|
||||
} catch(error) {
|
||||
window.Strapi.notification.error('An error occured');
|
||||
}
|
||||
|
||||
@ -5,11 +5,6 @@ import { createSelector } from 'reselect';
|
||||
*/
|
||||
const selectAuthPageDomain = () => (state) => state.get('authPage');
|
||||
|
||||
/**
|
||||
* Other specific selectors
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Default selector used by AuthPage
|
||||
*/
|
||||
@ -19,7 +14,23 @@ const makeSelectAuthPage = () => createSelector(
|
||||
(substate) => substate.toJS()
|
||||
);
|
||||
|
||||
/**
|
||||
* Other specific selectors
|
||||
*/
|
||||
|
||||
const makeSelectFormType = () => createSelector(
|
||||
selectAuthPageDomain(),
|
||||
(substate) => substate.get('formType'),
|
||||
);
|
||||
|
||||
const makeSelectModifiedData = () => createSelector(
|
||||
selectAuthPageDomain(),
|
||||
(substate) => substate.get('modifiedData').toJS(),
|
||||
);
|
||||
|
||||
export default makeSelectAuthPage;
|
||||
export {
|
||||
makeSelectFormType,
|
||||
makeSelectModifiedData,
|
||||
selectAuthPageDomain,
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user