| 
									
										
										
										
											2016-01-08 16:02:15 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2016-05-20 12:27:31 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * User.php | 
					
						
							|  |  |  |  * Copyright (C) 2016 thegrumpydictator@gmail.com | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2016-10-05 06:52:15 +02:00
										 |  |  |  * This software may be modified and distributed under the terms of the | 
					
						
							|  |  |  |  * Creative Commons Attribution-ShareAlike 4.0 International License. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * See the LICENSE file for details. | 
					
						
							| 
									
										
										
										
											2016-05-20 12:27:31 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-05 12:08:25 +01:00
										 |  |  | declare(strict_types = 1); | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-08 16:02:15 +01:00
										 |  |  | namespace FireflyIII; | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-22 21:21:11 +01:00
										 |  |  | use FireflyIII\Events\RequestedNewPassword; | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  | use Illuminate\Database\Eloquent\Relations\BelongsToMany; | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  | use Illuminate\Database\Eloquent\Relations\HasMany; | 
					
						
							|  |  |  | use Illuminate\Database\Eloquent\Relations\HasManyThrough; | 
					
						
							| 
									
										
										
										
											2016-01-08 16:02:15 +01:00
										 |  |  | use Illuminate\Foundation\Auth\User as Authenticatable; | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | use Illuminate\Notifications\Notifiable; | 
					
						
							| 
									
										
										
										
											2016-11-22 21:21:11 +01:00
										 |  |  | use Request; | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-09 08:20:55 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Class User | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package FireflyIII | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2016-01-08 16:02:15 +01:00
										 |  |  | class User extends Authenticatable | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  |     use Notifiable; | 
					
						
							| 
									
										
										
										
											2016-01-09 08:51:49 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The attributes that are mass assignable. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-26 15:51:07 +02:00
										 |  |  |     protected $fillable = ['email', 'password', 'blocked', 'blocked_code']; | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The attributes excluded from the model's JSON form. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $hidden = ['password', 'remember_token']; | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * The database table used by the model. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $table = 'users'; | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function accounts(): HasMany | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-02-06 05:35:00 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Account'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:04:06 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-02-06 05:01:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Alias to eloquent many-to-many relation's attach() method. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Full credit goes to: https://github.com/Zizaco/entrust | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param mixed $role | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function attachRole($role) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (is_object($role)) { | 
					
						
							|  |  |  |             $role = $role->getKey(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (is_array($role)) { | 
					
						
							|  |  |  |             $role = $role['id']; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->roles()->attach($role); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function attachments(): HasMany | 
					
						
							| 
									
										
										
										
											2015-07-18 09:49:19 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         return $this->hasMany('FireflyIII\Models\Attachment'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-28 08:58:01 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-04-28 08:58:01 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function bills(): HasMany | 
					
						
							| 
									
										
										
										
											2015-04-28 08:58:01 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Bill'); | 
					
						
							| 
									
										
										
										
											2015-04-28 08:58:01 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function budgets(): HasMany | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Budget'); | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function categories(): HasMany | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Category'); | 
					
						
							| 
									
										
										
										
											2016-01-12 21:37:48 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-04 17:14:59 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2016-02-04 17:14:59 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-08-26 09:30:52 +02:00
										 |  |  |     public function exportJobs(): HasMany | 
					
						
							| 
									
										
										
										
											2016-02-04 17:14:59 +01:00
										 |  |  |     { | 
					
						
							|  |  |  |         return $this->hasMany('FireflyIII\Models\ExportJob'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Checks if the user has a role by its name. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * Full credit goes to: https://github.com/Zizaco/entrust | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2016-02-17 22:02:32 +01:00
										 |  |  |      * @param string $name | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return bool | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-17 22:02:32 +01:00
										 |  |  |     public function hasRole(string $name): bool | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-17 22:02:32 +01:00
										 |  |  |         foreach ($this->roles as $role) { | 
					
						
							|  |  |  |             if ($role->name == $name) { | 
					
						
							|  |  |  |                 return true; | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-26 08:21:31 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @return HasMany | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-08-26 09:30:52 +02:00
										 |  |  |     public function importJobs(): HasMany | 
					
						
							| 
									
										
										
										
											2016-08-26 08:21:31 +02:00
										 |  |  |     { | 
					
						
							|  |  |  |         return $this->hasMany('FireflyIII\Models\ImportJob'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasManyThrough | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function piggyBanks(): HasManyThrough | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasManyThrough('FireflyIII\Models\PiggyBank', 'FireflyIII\Models\Account'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function preferences(): HasMany | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Preference'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 05:49:53 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function roles(): BelongsToMany | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->belongsToMany('FireflyIII\Models\Role'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function ruleGroups(): HasMany | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\RuleGroup'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function rules(): HasMany | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Rule'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-29 18:28:49 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-03-29 18:28:49 +02:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function tags(): HasMany | 
					
						
							| 
									
										
										
										
											2015-03-29 18:28:49 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\Tag'); | 
					
						
							| 
									
										
										
										
											2015-03-29 18:28:49 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasMany | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-08-26 09:30:52 +02:00
										 |  |  |     public function transactionJournals(): HasMany | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasMany('FireflyIII\Models\TransactionJournal'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |      * @return HasManyThrough | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-06 10:11:06 +01:00
										 |  |  |     public function transactions(): HasManyThrough | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-01-15 23:12:52 +01:00
										 |  |  |         return $this->hasManyThrough('FireflyIII\Models\Transaction', 'FireflyIII\Models\TransactionJournal'); | 
					
						
							| 
									
										
										
										
											2015-02-06 05:14:27 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-22 21:21:11 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Send the password reset notification. | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param  string  $token | 
					
						
							|  |  |  |      * @return void | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function sendPasswordResetNotification($token) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $ip = Request::ip(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         event(new RequestedNewPassword($this, $token, $ip)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-16 06:19:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-06 04:39:52 +01:00
										 |  |  | } |