all repos

onasty @ efd970430597e242aa15c24f868fc0e7103b45ac

a one-time notes service

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
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.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.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 =
    Effect.sendApiRequest
        { endpoint = "/api/v1/auth/refresh-tokens"
        , method = "POST"
        , body = Encode.object [ ( "refresh_token", Encode.string options.refreshToken ) ] |> Http.jsonBody
        , 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 =
    Effect.sendApiRequest
        { endpoint = "/api/v1/auth/resend-verification-email"
        , method = "POST"
        , body = Encode.object [ ( "email", Encode.string options.email ) ] |> Http.jsonBody
        , onResponse = options.onResponse
        , decoder = Decode.succeed ()
        }