summaryrefslogtreecommitdiff
path: root/app/client/auth/auth.reducer.js
blob: cacb0d594262fcaca15ba96c2bd149c26a80ea8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import types from '../types';

const authInitialState = {
  token: null,
  user: {},
  groups: {},
  loading: false,
  isAuthenticated: false,
};

const auth = (state = authInitialState, action) => {
  switch(action.type) {
    case types.auth.set_token:
      return {
        ...state,
        token: action.data,
        isAuthenticated: !!action.data,
        loading: false,
        error: null,
      };

    case types.auth.loading:
      return {
        ...state,
        loading: true,
        error: null,
      };

    case types.auth.set_current_user:
      const groups = {}
      action.data.groups.forEach(g => groups[g.name.toLowerCase()] = true)
      if (action.data.is_staff) {
        groups['staff'] = true
      }
      if (action.data.is_superuser) {
        groups['superuser'] = true
      }
      return {
        ...state,
        user: action.data,
        groups,
        error: null,
      };

    case types.auth.logout_user:
      return {
        ...authInitialState
      };

    case types.auth.set_error:
      return {
        ...state,
        loading: false,
        error: action.data,
      }

    case types.auth.loading:
      // const initial_state_el = document.querySelector('#initial_state')
      // if (initial_state_el) {
      //   try {
      //     const initial_state = JSON.parse(initial_state_el.innerHTML)
      //     if (initial_state && initial_state.auth && initial_state.auth.user) {
      //       console.log(initial_state.auth.user)
      //       return {
      //         ...state,
      //         user: {
      //           ...initial_state.auth.user,
      //         }
      //       }
      //     }
      //   } catch (e) {
      //     console.error("error loading initial state")
      //   }
      // }
      return state;

    default:
      return state;
  }
}

export default auth;