Add encoding and decoding of login datas a function.
This commit is contained in:
parent
471f5b301b
commit
128430b38f
|
@ -125,7 +125,7 @@ updateLoginResponse model a r = case r of
|
||||||
Ok lr -> ( { model | token = Just lr.accessToken, loginUsername = lr.userId, apiUrl = a }, Cmd.batch
|
Ok lr -> ( { model | token = Just lr.accessToken, loginUsername = lr.userId, apiUrl = a }, Cmd.batch
|
||||||
[ firstSync model.apiUrl lr.accessToken
|
[ firstSync model.apiUrl lr.accessToken
|
||||||
, Nav.pushUrl model.key <| Url.Builder.absolute [] []
|
, Nav.pushUrl model.key <| Url.Builder.absolute [] []
|
||||||
, setStoreValuePort ("scylla.loginInfo", Json.Encode.string (lr.accessToken ++ "\n" ++ model.apiUrl))
|
, setStoreValuePort ("scylla.loginInfo", encodeLoginInfo (lr.accessToken, model.apiUrl, lr.userId))
|
||||||
] )
|
] )
|
||||||
Err e -> (model, Cmd.none)
|
Err e -> (model, Cmd.none)
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,30 @@
|
||||||
module Scylla.Login exposing (..)
|
module Scylla.Login exposing (..)
|
||||||
import Scylla.Api exposing (ApiToken)
|
import Scylla.Api exposing (ApiUrl, ApiToken)
|
||||||
import Json.Decode as Decode exposing (Decoder, int, string, float, list, value, dict, bool)
|
import Json.Decode as Decode exposing (Decoder, int, string, float, list, value, dict, bool)
|
||||||
import Json.Decode.Pipeline exposing (required, optional)
|
import Json.Decode.Pipeline exposing (required, optional)
|
||||||
|
import Json.Encode as Encode
|
||||||
|
|
||||||
type alias Username = String
|
type alias Username = String
|
||||||
type alias Password = String
|
type alias Password = String
|
||||||
|
|
||||||
|
type alias LoginInfo = (ApiToken, ApiUrl, Username)
|
||||||
|
|
||||||
|
encodeLoginInfo : LoginInfo -> Decode.Value
|
||||||
|
encodeLoginInfo (t,a,u) = Encode.string (t ++ "," ++ a ++ "," ++ u)
|
||||||
|
|
||||||
|
parseLoginInfoString : String -> Decoder LoginInfo
|
||||||
|
parseLoginInfoString s = case String.indexes "," s of
|
||||||
|
[ fst, snd ] -> Decode.succeed
|
||||||
|
( (String.slice 0 fst s)
|
||||||
|
, (String.slice (fst + 1) snd s)
|
||||||
|
, (String.dropLeft snd s)
|
||||||
|
)
|
||||||
|
_ -> Decode.fail "Incorrectly formatted Login Info string"
|
||||||
|
|
||||||
|
loginInfoDecoder : Decoder LoginInfo
|
||||||
|
loginInfoDecoder = string
|
||||||
|
|> Decode.andThen parseLoginInfoString
|
||||||
|
|
||||||
type alias LoginResponse =
|
type alias LoginResponse =
|
||||||
{ userId : String
|
{ userId : String
|
||||||
, accessToken : ApiToken
|
, accessToken : ApiToken
|
||||||
|
|
Loading…
Reference in New Issue
Block a user