aboutsummaryrefslogtreecommitdiff
path: root/src/js/forms.coffee
blob: 19a1540c8e8be2d048b75a3f41b2072e396039b1 (plain) (blame)
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
###
Web Frontend for Botleagues
Copyright (C) 2015 Camil Staps <info@camilstaps.nl>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
###

# Request API for registering
$ 'form.form-register'
    .submit ->
        if BotleaguesFrontend.ensurePasswordsMatch (($ this).find 'input[type="password"]'), $ this
            Botleagues.request
                endpoint: 'user'
                method: 'POST'
                data:
                    email: 
                        $ this
                        .find 'input[name="email"]'
                        .val()
                    password: 
                        $ this
                        .find 'input[name="password"]'
                        .val()
                callback: BotleaguesCallback.register

        false

# Show login form on click
$ '.btn-botleagues-login'
    .focus ->
        $ '#login-block'
            .slideDown()
        $ '#login-email'
            .focus()
        false

# Request API for logging in
$ '#login-form'
    .submit ->
        Botleagues.login ($ '#login-email').val(), ($ '#login-password').val()
        false

# Password reset form, stage 1: request token
$ '#password-reset-form-1'
    .submit ->
        Botleagues.request
            endpoint: 'user/' + encodeURIComponent(($ '#password-reset-email').val()) + '/password_reminder'
            method: 'POST'
            callback: (data) ->
                if data.error?
                    BotleaguesFrontend.error
                        message: data.error
                        prepend_to: $ '#password-reset-form-1'
                else
                    BotleaguesFrontend.success
                        message: "We've sent an email with a password reset token to " + data.password_reminder.userEmail + ". It will be valid until " + (new Date(Date.parse data.password_reminder.valid_till)).toTimeString()
                        prepend_to: $ '#password-reset-form-1'
                    $ '#password-reset-form-2'
                        .parent().parent().fadeIn()
                    $ '#password-reset-form-1'
                        .addClass 'text-muted'
                        .find 'button, input'
                        .attr 'disabled', true
                return

        false

# Password reset form, stage 2: reset password
$ '#password-reset-form-2'
    .submit ->
        if BotleaguesFrontend.ensurePasswordsMatch (($ this).find 'input[type="password"]'), $ this
            Botleagues.request
                endpoint: 'user/' + (encodeURIComponent ($ '#password-reset-email').val()) + '/password_reminder/' + ($ '#password-reset-token').val()
                method: 'DELETE'
                data:
                    password:
                        $ '#password-reset-password'
                        .val()
                callback: (data) ->
                    if data.error?
                        BotleaguesFrontend.error
                            message: data.error
                            prepend_to: $ '#password-reset-form-2'
                    else
                        BotleaguesFrontend.success
                            message: "Your password has been reset."
                            prepend_to: $ '#password-reset-form-2'
                        $ '#password-reset-form-2'
                            .addClass 'text-muted'
                            .find 'button, input'
                            .attr 'disabled', true
                    return

        false