auth.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import { UPDATE_AVATAR } from 'misago/reducers/users';
  2. export var initialState = {
  3. signedIn: false,
  4. signedOut: false
  5. };
  6. export const SIGN_IN = 'SIGN_IN';
  7. export const SIGN_OUT = 'SIGN_OUT';
  8. export function signIn(user) {
  9. return {
  10. type: SIGN_IN,
  11. user
  12. };
  13. }
  14. export function signOut(soft=false) {
  15. return {
  16. type: SIGN_OUT,
  17. soft
  18. };
  19. }
  20. export default function auth(state=initialState, action=null) {
  21. switch (action.type) {
  22. case SIGN_IN:
  23. return Object.assign({}, state, {
  24. signedIn: action.user
  25. });
  26. case SIGN_OUT:
  27. return Object.assign({}, state, {
  28. isAuthenticated: false,
  29. isAnonymous: true,
  30. signedOut: !action.soft
  31. });
  32. case UPDATE_AVATAR:
  33. if (state.isAuthenticated && state.user.id === action.userId) {
  34. let newState = Object.assign({}, state);
  35. newState.user = Object.assign({}, state.user, {
  36. 'avatar_hash': action.avatarHash
  37. });
  38. return newState;
  39. }
  40. return state;
  41. default:
  42. return state;
  43. }
  44. }