]> BookStack Code Mirror - bookstack/blob - app/Providers/LdapUserProvider.php
c2b961a34a2489e5ac9fa9c21ccccfbbb79788a3
[bookstack] / app / Providers / LdapUserProvider.php
1 <?php
2
3 namespace BookStack\Providers;
4
5
6 use BookStack\User;
7 use Illuminate\Contracts\Auth\Authenticatable;
8 use Illuminate\Contracts\Auth\UserProvider;
9
10 class LdapUserProvider implements UserProvider
11 {
12
13     /**
14      * The user model.
15      *
16      * @var string
17      */
18     protected $model;
19
20
21     /**
22      * LdapUserProvider constructor.
23      * @param $model
24      */
25     public function __construct($model)
26     {
27         $this->model = $model;
28     }
29
30     /**
31      * Create a new instance of the model.
32      *
33      * @return \Illuminate\Database\Eloquent\Model
34      */
35     public function createModel()
36     {
37         $class = '\\'.ltrim($this->model, '\\');
38
39         return new $class;
40     }
41
42
43     /**
44      * Retrieve a user by their unique identifier.
45      *
46      * @param  mixed $identifier
47      * @return \Illuminate\Contracts\Auth\Authenticatable|null
48      */
49     public function retrieveById($identifier)
50     {
51         return $this->createModel()->newQuery()->find($identifier);
52     }
53
54     /**
55      * Retrieve a user by their unique identifier and "remember me" token.
56      *
57      * @param  mixed  $identifier
58      * @param  string  $token
59      * @return \Illuminate\Contracts\Auth\Authenticatable|null
60      */
61     public function retrieveByToken($identifier, $token)
62     {
63         $model = $this->createModel();
64
65         return $model->newQuery()
66             ->where($model->getAuthIdentifierName(), $identifier)
67             ->where($model->getRememberTokenName(), $token)
68             ->first();
69     }
70
71
72     /**
73      * Update the "remember me" token for the given user in storage.
74      *
75      * @param  \Illuminate\Contracts\Auth\Authenticatable $user
76      * @param  string                                     $token
77      * @return void
78      */
79     public function updateRememberToken(Authenticatable $user, $token)
80     {
81         $user->setRememberToken($token);
82
83         $user->save();
84     }
85
86     /**
87      * Retrieve a user by the given credentials.
88      *
89      * @param  array $credentials
90      * @return \Illuminate\Contracts\Auth\Authenticatable|null
91      */
92     public function retrieveByCredentials(array $credentials)
93     {
94         // TODO: Implement retrieveByCredentials() method.
95
96         // Get user via LDAP
97
98         // Search current user base by looking up a uid
99
100         // If not exists create a new user instance with attached role
101         // but do not store it in the database yet
102
103         //
104     }
105
106     /**
107      * Validate a user against the given credentials.
108      *
109      * @param  \Illuminate\Contracts\Auth\Authenticatable $user
110      * @param  array                                      $credentials
111      * @return bool
112      */
113     public function validateCredentials(Authenticatable $user, array $credentials)
114     {
115         // TODO: Implement validateCredentials() method.
116     }
117 }