Completed
Push — master ( 941cee...f7797c )
by Sergey
09:34 queued 05:52
created

Password   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
c 1
b 0
f 0
lcom 1
cbo 3
dl 0
loc 62
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A sendResetLink() 0 6 1
A reset() 0 23 1
A change() 0 10 1
1
<?php
2
3
namespace seregazhuk\PinterestBot\Api\Providers;
4
5
use seregazhuk\PinterestBot\Api\Response;
6
use seregazhuk\PinterestBot\Helpers\UrlBuilder;
7
8
class Password extends Provider
9
{
10
    /**
11
     * Ask for password reset link in email
12
     *
13
     * @param string $user Username or user mail
14
     * @return bool
15
     */
16
    public function sendResetLink($user)
17
    {
18
        $request = ['username_or_email' => $user];
19
20
        return $this->execPostRequest($request, UrlBuilder::RESOURCE_RESET_PASSWORD_SEND_LINK);
21
    }
22
23
    /**
24
     * Set a new password by link from reset password email
25
     *
26
     * @param string $link
27
     * @param string $newPassword
28
     * @return bool|Response
29
     */
30
    public function reset($link, $newPassword)
31
    {
32
        // Visit link to get current reset token, username and token expiration
33
        $this->execGetRequest([], $link);
34
        $this->request->clearToken();
35
36
        $passwordResetUrl = $this->request->getHttpClient()->getCurrentUrl();
37
38
        $urlData = parse_url($passwordResetUrl);
39
        $username = trim(str_replace('/pw/', '', $urlData['path']), '/');
40
41
        $query = [];
42
        parse_str($urlData['query'], $query);
43
44
45
        return $this->execPostRequest([
46
            'username'             => $username,
47
            'new_password'         => $newPassword,
48
            'new_password_confirm' => $newPassword,
49
            'token'                => $query['t'],
50
            'expiration'           => $query['e'],
51
        ], UrlBuilder::RESOURCE_RESET_PASSWORD_UPDATE, true);
52
    }
53
54
    /**
55
     * @param string $oldPassword
56
     * @param string $newPassword
57
     * @return bool
58
     */
59
    public function change($oldPassword, $newPassword)
60
    {
61
        $request = [
62
            'old_password'         => $oldPassword,
63
            'new_password'         => $newPassword,
64
            'new_password_confirm' => $newPassword,
65
        ];
66
67
        return $this->execPostRequest($request, UrlBuilder::RESOURCE_CHANGE_PASSWORD);
68
    }
69
}