github.com/simpleiot/simpleiot@v0.18.3/frontend/src/Api/Auth.elm (about)

     1  module Api.Auth exposing
     2      ( User
     3      , decode
     4      , encode
     5      , login
     6      )
     7  
     8  import Api.Data exposing (Data)
     9  import Http
    10  import Json.Decode as Decode
    11  import Json.Decode.Pipeline exposing (required)
    12  import Json.Encode as Encode
    13  import Url.Builder
    14  
    15  
    16  type alias User =
    17      { token : String
    18      , email : String
    19      }
    20  
    21  
    22  decode : Decode.Decoder User
    23  decode =
    24      Decode.succeed User
    25          |> required "token" Decode.string
    26          |> required "email" Decode.string
    27  
    28  
    29  encode : User -> Encode.Value
    30  encode user =
    31      Encode.object
    32          [ ( "token", Encode.string user.token )
    33          , ( "email", Encode.string user.email )
    34          ]
    35  
    36  
    37  login :
    38      { user : { user | email : String, password : String }
    39      , onResponse : Data User -> msg
    40      }
    41      -> Cmd msg
    42  login options =
    43      Http.post
    44          { body =
    45              Http.multipartBody
    46                  [ Http.stringPart "email" options.user.email
    47                  , Http.stringPart "password" options.user.password
    48                  ]
    49          , url = Url.Builder.absolute [ "v1", "auth" ] []
    50          , expect = Api.Data.expectJson options.onResponse decode
    51          }