onasty/web/src/Api/Auth.elm(view raw)
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
module Api.Auth exposing (forgotPassword, refreshToken, resendVerificationEmail, resetPassword, signin, signup)
import Api
import Data.Credentials as Credentials exposing (Credentials)
import Effect exposing (Effect)
import Http
import Json.Decode as Decode
import Json.Encode as Encode
signin :
{ onResponse : Result Api.Error Credentials -> msg
, email : String
, password : String
}
-> Effect msg
signin options =
let
body : Encode.Value
body =
Encode.object
[ ( "email", Encode.string options.email )
, ( "password", Encode.string options.password )
]
in
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/signin"
, method = "POST"
, body = Http.jsonBody body
, onResponse = options.onResponse
, decoder = Credentials.decode
}
signup :
{ onResponse : Result Api.Error () -> msg
, email : String
, password : String
}
-> Effect msg
signup options =
let
body : Encode.Value
body =
Encode.object
[ ( "email", Encode.string options.email )
, ( "password", Encode.string options.password )
]
in
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/signup"
, method = "POST"
, body = Http.jsonBody body
, onResponse = options.onResponse
, decoder = Decode.succeed ()
}
refreshToken :
{ onResponse : Result Api.Error Credentials -> msg
, refreshToken : String
}
-> Effect msg
refreshToken options =
let
body =
Encode.object [ ( "refresh_token", Encode.string options.refreshToken ) ]
in
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/refresh-tokens"
, method = "POST"
, body = Http.jsonBody body
, onResponse = options.onResponse
, decoder = Credentials.decode
}
forgotPassword : { onResponse : Result Api.Error () -> msg, email : String } -> Effect msg
forgotPassword options =
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/reset-password"
, method = "POST"
, body = Encode.object [ ( "email", Encode.string options.email ) ] |> Http.jsonBody
, onResponse = options.onResponse
, decoder = Decode.succeed ()
}
resetPassword : { onResponse : Result Api.Error () -> msg, token : String, password : String } -> Effect msg
resetPassword options =
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/reset-password/" ++ options.token
, method = "POST"
, body = Encode.object [ ( "password", Encode.string options.password ) ] |> Http.jsonBody
, onResponse = options.onResponse
, decoder = Decode.succeed ()
}
resendVerificationEmail : { onResponse : Result Api.Error () -> msg, email : String } -> Effect msg
resendVerificationEmail options =
let
body =
Encode.object [ ( "email", Encode.string options.email ) ]
in
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/resend-verification-email"
, method = "POST"
, body = Http.jsonBody body
, onResponse = options.onResponse
, decoder = Decode.succeed ()
}
|