-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathAuth.elm
49 lines (33 loc) · 1.2 KB
/
Auth.elm
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
port module Flux.Auth exposing (..)
import Flux.API as API exposing (GenApiResp, WDApiResp)
import Flux.Models exposing (AuthModel)
import Flux.Msgs exposing (FluxMsg(..))
import Helpers.Json exposing (decodePortResp)
import Helpers.Msgs exposing (HelperMsg)
import Json.Decode as Decode
import Json.Decode.Pipeline exposing (decode, required)
import Maybe.Extra exposing (isJust)
import RemoteData exposing (WebData)
port isAuthenticated : (Decode.Value -> msg) -> Sub msg
decodeIsAuthenticated : (Result String String -> msg) -> Decode.Value -> HelperMsg msg
decodeIsAuthenticated msgConstructor val =
decodePortResp Decode.string val msgConstructor
haveAuthToken : AuthModel {} -> Bool
haveAuthToken model =
isJust model.token
isLoggedIn : AuthModel {} -> Bool
isLoggedIn model =
isJust model.roles
sendAuthEmail : String -> Cmd FluxMsg
sendAuthEmail email =
API.apiReqAuthEmail email OnSentAuthEmail
getToken : String -> Cmd FluxMsg
getToken tempToken =
API.tempTokenToAuthToken tempToken OnAuthTokenResp
getRoles : Maybe String -> Cmd FluxMsg
getRoles mToken =
case mToken of
Just token ->
API.getRoles token OnGetRolesResp
Nothing ->
Cmd.none