97 lines
1.7 KiB
TypeScript
97 lines
1.7 KiB
TypeScript
// - Import react components
|
|
import {Reducer, Action} from "redux";
|
|
|
|
// - Import action types
|
|
import {AuthorizeActionType} from 'constants/authorizeActionType'
|
|
|
|
|
|
/**
|
|
* Default state
|
|
*/
|
|
var defaultState = {
|
|
uid: 0,
|
|
authed: false,
|
|
updatePassword: false,
|
|
guest:false
|
|
}
|
|
|
|
/**
|
|
* Default post state interface
|
|
*
|
|
* @export
|
|
* @interface IAuthorizeState
|
|
*/
|
|
export interface IAuthorizeState {
|
|
uid: number,
|
|
authed: Boolean,
|
|
updatePassword: Boolean,
|
|
guest:Boolean
|
|
}
|
|
|
|
/**
|
|
* Default authorize action interface
|
|
*
|
|
* @export
|
|
* @interface IAuthorizeAction
|
|
*/
|
|
export interface IAuthorizeAction {
|
|
payload: any,
|
|
type: AuthorizeActionType
|
|
|
|
}
|
|
|
|
/**
|
|
* Default authorize reducer state
|
|
*
|
|
* @export
|
|
* @class DefaultAuthorizeState
|
|
* @implements {IAuthorizeState}
|
|
*/
|
|
export class DefaultAuthorizeState implements IAuthorizeState{
|
|
uid: number = 0;
|
|
authed: Boolean = false;
|
|
updatePassword: Boolean = false;
|
|
guest: Boolean = false;
|
|
|
|
}
|
|
|
|
/**
|
|
* Authorize reducer
|
|
* @param {object} state
|
|
* @param {object} action
|
|
*/
|
|
export var authorizeReducer = (state : IAuthorizeState = new DefaultAuthorizeState(), action: IAuthorizeAction) =>{
|
|
const { payload } = action;
|
|
switch (action.type) {
|
|
case AuthorizeActionType.LOGIN:
|
|
return{
|
|
...state,
|
|
uid: payload.uid,
|
|
authed: true,
|
|
guest:false
|
|
}
|
|
case AuthorizeActionType.LOGOUT:
|
|
return{
|
|
...state,
|
|
uid: 0,
|
|
authed: false,
|
|
guest:true
|
|
}
|
|
|
|
case AuthorizeActionType.SIGNUP:
|
|
return{
|
|
...state,
|
|
uid: payload.userId
|
|
}
|
|
case AuthorizeActionType.UPDATE_PASSWORD:
|
|
return{
|
|
...state,
|
|
updatePassword: payload.updatePassword
|
|
}
|
|
default:
|
|
return state
|
|
|
|
}
|
|
|
|
}
|