2015-02-06 04:39:52 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
									
										
										
										
											2024-11-25 04:18:55 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  auth . php 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-17 16:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2019  james @ firefly - iii . org . 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-02 06:38:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  This  file  is  part  of  Firefly  III  ( https :// github . com / firefly - iii ) . 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-02 06:38:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  This  program  is  free  software :  you  can  redistribute  it  and / or  modify 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  it  under  the  terms  of  the  GNU  Affero  General  Public  License  as 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  published  by  the  Free  Software  Foundation ,  either  version  3  of  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-02 06:38:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-02 06:38:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  GNU  Affero  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-02 06:38:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Affero  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  this  program .   If  not ,  see  < https :// www . gnu . org / licenses />. 
							 
						 
					
						
							
								
									
										
										
										
											2017-10-21 08:40:00 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-14 17:40:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								declare ( strict_types = 1 );  
						 
					
						
							
								
									
										
										
										
											2024-03-10 06:17:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 20:23:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								use  FireflyIII\User ;  
						 
					
						
							
								
									
										
										
										
											2017-09-14 17:40:02 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-12-22 08:43:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if  ( 'ldap'  ===  strtolower (( string )  env ( 'AUTHENTICATION_GUARD' )))  {  
						 
					
						
							
								
									
										
										
										
											2023-12-20 19:39:53 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    exit ( 'LDAP is no longer supported by Firefly III v5.7+. Sorry about that. You will have to switch to "remote_user_guard", and use tools like Authelia or Keycloak to use LDAP together with Firefly III.' ); 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-13 17:00:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2021-10-23 09:37:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-09 22:32:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								return  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Authentication  Defaults 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  This  option  controls  the  default  authentication  " guard "  and  password 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  reset  options  for  your  application .  You  may  change  these  defaults 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  as  required ,  but  they ' re  a  perfect  start  for  most  applications . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-08-18 21:08:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 14:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'defaults'          =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'guard'      =>  envNonEmpty ( 'AUTHENTICATION_GUARD' ,  'web' ), 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'passwords'  =>  'users' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ], 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 14:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'guard_header'      =>  envNonEmpty ( 'AUTHENTICATION_GUARD_HEADER' ,  'REMOTE_USER' ), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'guard_email'       =>  envNonEmpty ( 'AUTHENTICATION_GUARD_EMAIL' ,  null ), 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-09 22:32:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Authentication  Guards 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Next ,  you  may  define  every  authentication  guard  for  your  application . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Of  course ,  a  great  default  configuration  has  been  defined  for  you 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  here  which  uses  session  storage  and  the  Eloquent  user  provider . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  All  authentication  drivers  have  a  user  provider .  This  defines  how  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  users  are  actually  retrieved  out  of  your  database  or  other  storage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  mechanisms  used  by  this  application  to  persist  your  user ' s  data . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Supported :  " session " ,  " token " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 14:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'guards'            =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'web'                =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-15 11:33:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'driver'    =>  'session' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'provider'  =>  'users' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'remote_user_guard'  =>  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'driver'    =>  'remote_user_guard' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'provider'  =>  'remote_user_provider' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        'api'                =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-04 08:14:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'driver'    =>  'passport' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'provider'  =>  'users' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ], 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-09 22:32:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  User  Providers 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  All  authentication  drivers  have  a  user  provider .  This  defines  how  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  users  are  actually  retrieved  out  of  your  database  or  other  storage 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  mechanisms  used  by  this  application  to  persist  your  user ' s  data . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  If  you  have  multiple  user  tables  or  models  you  may  configure  multiple 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  sources  which  represent  each  model  /  table .  These  sources  may  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  be  assigned  to  any  extra  authentication  guards  you  have  defined . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Supported :  " database " ,  " eloquent " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 14:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'providers'         =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'users'                 =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 15:01:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'driver'  =>  'eloquent' , 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 20:23:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'model'   =>  User :: class , 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'remote_user_provider'  =>  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'driver'  =>  'remote_user_provider' , 
							 
						 
					
						
							
								
									
										
										
										
											2024-01-17 20:23:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'model'   =>  User :: class , 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-11 06:55:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ], 
							 
						 
					
						
							
								
									
										
										
										
											2017-09-09 22:32:11 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Resetting  Passwords 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  You  may  specify  multiple  password  reset  configurations  if  you  have  more 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  than  one  user  table  or  model  in  the  application  and  you  want  to  have 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  separate  password  reset  settings  based  on  the  specific  user  types . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  The  expire  time  is  the  number  of  minutes  that  the  reset  token  should  be 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  considered  valid .  This  security  feature  keeps  tokens  short - lived  so 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  they  have  less  time  to  be  guessed .  You  may  change  this  as  needed . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-01-01 14:45:51 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    'passwords'         =>  [ 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        'users'  =>  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'provider'  =>  'users' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-15 11:33:07 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'table'     =>  'password_resets' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            'expire'    =>  60 , 
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 18:18:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            'throttle'  =>  300 ,  // Allows a user to request 1 token per 300 seconds
 
							 
						 
					
						
							
								
									
										
										
										
											2016-01-08 15:59:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ], 
							 
						 
					
						
							
								
									
										
										
										
											2015-06-27 08:06:24 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ], 
							 
						 
					
						
							
								
									
										
										
										
											2020-06-06 22:25:52 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Password  Confirmation  Timeout 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |-------------------------------------------------------------------------- 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  Here  you  may  define  the  amount  of  seconds  before  a  password  confirmation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  times  out  and  the  user  is  prompted  to  re - enter  their  password  via  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    |  confirmation  screen .  By  default ,  the  timeout  lasts  for  three  hours . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    'password_timeout'  =>  10800 , 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-06 04:39:52 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								];