1+ import SecurityAPI from "../api/security" ;
2+
3+ const AUTHENTICATING = "AUTHENTICATING" ,
4+ AUTHENTICATING_SUCCESS = "AUTHENTICATING_SUCCESS" ,
5+ AUTHENTICATING_ERROR = "AUTHENTICATING_ERROR" ,
6+ PROVIDING_DATA_ON_REFRESH_SUCCESS = "PROVIDING_DATA_ON_REFRESH_SUCCESS" ;
7+
8+ export default {
9+ namespaced :true ,
10+ state :{
11+ isLoading :false ,
12+ error :null ,
13+ isAuthenticated :false ,
14+ user :null
15+ } ,
16+ getters :{
17+ isLoading ( state ) {
18+ return state . isLoading ;
19+ } ,
20+ hasError ( state ) {
21+ return state . error !== null ;
22+ } ,
23+ error ( state ) {
24+ return state . error ;
25+ } ,
26+ isAuthenticated ( state ) {
27+ return state . isAuthenticated ;
28+ } ,
29+ hasRole ( state ) {
30+ return role => {
31+ return state . user . roles . indexOf ( role ) !== - 1 ;
32+ }
33+ }
34+ } ,
35+ mutations :{
36+ [ AUTHENTICATING ] ( state ) {
37+ state . isLoading = true ;
38+ state . error = null ;
39+ state . isAuthenticated = false ;
40+ state . user = null ;
41+ } ,
42+ [ AUTHENTICATING_SUCCESS ] ( state , user ) {
43+ state . isLoading = false ;
44+ state . error = null ;
45+ state . isAuthenticated = true ;
46+ state . user = user ;
47+ } ,
48+ [ AUTHENTICATING_ERROR ] ( state , error ) {
49+ state . isLoading = false ;
50+ state . error = error ;
51+ state . isAuthenticated = false ;
52+ state . user = null ;
53+ } ,
54+ [ PROVIDING_DATA_ON_REFRESH_SUCCESS ] ( state , payload ) {
55+ state . isLoading = false ;
56+ state . error = null ;
57+ state . isAuthenticated = payload . isAuthenticated ;
58+ state . user = payload . user ;
59+ }
60+ } ,
61+ actions :{
62+ async login ( { commit} , payload ) {
63+ commit ( AUTHENTICATING ) ;
64+ try {
65+ let response = await SecurityAPI . login ( payload . login , payload . password ) ;
66+ commit ( AUTHENTICATING_SUCCESS , response . data ) ;
67+ return response . data ;
68+ } catch ( error ) {
69+ commit ( AUTHENTICATING_ERROR , error ) ;
70+ return null ;
71+ }
72+ } ,
73+ onRefresh ( { commit} , payload ) {
74+ commit ( PROVIDING_DATA_ON_REFRESH_SUCCESS , payload ) ;
75+ }
76+ }
77+ }