LoginController
extends BaseController
in package
uses
SessionsTrait, UsersTrait
Login page controller.
Tags
Table of Contents
Properties
- $Input : Input
- $Languages : Languages
- $runnedCronResult : array<string|int, mixed>
- $totalLoggedInSessions : int
- $userRow : object|null
- $userSessionCookieData : array<string|int, mixed>
Methods
- __construct() : mixed
- {@inheritDoc}
- doLoginAction() : string
- Rest API do login.
- doLoginResetAction() : string
- REST API do login with reset password action (login one time after logged out because simultaneous login).
- doMfaAction() : string
- REST API do 2 step verification.
- indexAction() : string
- Login page.
- mfaAction() : string
- Display 2 step verification page.
- resetAction() : string
- Login one time after account locked due to user's setting about simultaneous login to log all out.
- addUpdateUserFormValidation() : array<string|int, mixed>
- Form validation for add and update user.
- decryptUserFieldsKey() : string
- Decrypt user fields key.
- doLogin() : array<string|int, mixed>
- Do login process.
- generateUserFieldsKey() : array<string|int, mixed>
- Generate user fields key.
- getConfig() : array<string|int, mixed>
- Get common use configuration between methods.
- getPageHtmlClasses() : string
- Get page HTML classes.
- getPageHtmlTitle() : string
- Get page HTML title including site name if it was set.
- getUserUrlsMethods() : array<string|int, mixed>
- Get URLs and methods about user pages.
- isUserLoggedIn() : bool
- Check if user is logged in.
- isUserProxy() : bool
- Check if user is using proxy.
- logoutUser() : mixed
- Logout target user.
- maybeRunCron() : mixed
- Maybe run cron job if config is set to not use server cron.
- responseJson() : string
- {@inheritDoc}
- responseXml() : string
- {@inheritDoc}
- sessionTraitLogoutAll() : mixed
- Logout all succeeded login sessions, lock user account, send login link to user's email.
- setBasicConfig() : mixed
- Setup basic PHP configurations such as default timezone.
- setHeaderAllowOrigin() : mixed
- Set header allow origin for CORS.
- validateLoginResetKey() : bool
- Validate login reset key.
- isModuleExcute() : bool
- Check if current call is `Modules->execute()`
- removeSensitiveCfgInfo() : array<string|int, mixed>
- Remove sensitive config info that contains non-site configuration.
- sessionsTraitCheckIsLoggedInFromContainer() : array<string|int, mixed>
- Check is logged in from container if exists.
- sessionTraitLogoutPreviousSessions() : mixed
- Logout all sessions before latest succeeded login. (logout only succeeded login).
Properties
$Input
protected
Input
$Input
$Languages
protected
Languages
$Languages
$runnedCronResult
protected
array<string|int, mixed>
$runnedCronResult
= []
Runned cron jobs result.
This is for use in case that set cron job, cron tab to run by URL.
The CronController will be call to this BaseController.
So, it is no need to using Libraries\Cron class to run jobs again.
Just get the run result from this property.
This property will be set by maybeRunCron() method.
$totalLoggedInSessions
protected
int
$totalLoggedInSessions
= 0
The number of sessions that found this user logged in. This property is able to access after called to isUserLoggedIn() method.
$userRow
protected
object|null
$userRow
The user row that get from users table. This property is for get and access across methods without get it again and again.
$userSessionCookieData
protected
array<string|int, mixed>
$userSessionCookieData
= []
The cookie data of logged in user. This property is able to access after called to isUserLoggedIn() method.
Methods
__construct()
{@inheritDoc}
public
__construct(Container $Container) : mixed
Parameters
- $Container : Container
doLoginAction()
Rest API do login.
public
doLoginAction() : string
Return values
stringdoLoginResetAction()
REST API do login with reset password action (login one time after logged out because simultaneous login).
public
doLoginResetAction() : string
Return values
stringdoMfaAction()
REST API do 2 step verification.
public
doMfaAction() : string
This method will be redirect to login page if failed over x times and did not requested via ajax, rest api.
Return values
stringindexAction()
Login page.
public
indexAction() : string
Return values
stringmfaAction()
Display 2 step verification page.
public
mfaAction() : string
Return values
stringresetAction()
Login one time after account locked due to user's setting about simultaneous login to log all out.
public
resetAction() : string
This will showing reset password form.
Return values
stringaddUpdateUserFormValidation()
Form validation for add and update user.
protected
addUpdateUserFormValidation(array<string|int, mixed> $data[, array<string|int, mixed> $dataField = [] ][, array<string|int, mixed> $dataUsersRoles = [] ][, string $saveType = 'insert' ][, string|int $user_id = '' ]) : array<string|int, mixed>
Validate required and valid form fields.
Validate that selected roles did not have higher priority that the user who add or update them.
Validate username and email must not exists.
This method was called from doAddAction() method.
Parameters
- $data : array<string|int, mixed>
-
The associative array form data.
- $dataField : array<string|int, mixed> = []
-
Associative array for
user_fieldstable. - $dataUsersRoles : array<string|int, mixed> = []
-
Associative array for
users_rolestable. - $saveType : string = 'insert'
-
Type of saving data. It can be 'insert' or 'update'. Default is 'insert'.
- $user_id : string|int = ''
-
The
user_idto check where$saveTypeis 'update' that any user else data must be unique.
Return values
array<string|int, mixed> —Return associative array with keys if contain at least one error:
formResultStatus (if error),
formResultMessage (if error) The result message,
formFieldsValidation (optional) Fields that contain errors,
responseStatus (optional) For HTTP response status,
decryptUserFieldsKey()
Decrypt user fields key.
protected
decryptUserFieldsKey(string|object $encryptedKey) : string
Parameters
- $encryptedKey : string|object
-
The encrypted key string. Or you may set user_fields object from PDO query instead.
Return values
string —Return decrypted key string or return empty string if failed to decrypted.
doLogin()
Do login process.
protected
doLogin(array<string|int, mixed> $data, array<string|int, mixed> $output) : array<string|int, mixed>
This method was called from doLoginAction() method.
There is http_response_code() function call from here.
If login success, it will write cookies here (including skip "antibot" cookie if applicable).
Parameters
- $data : array<string|int, mixed>
-
The form data.
- $output : array<string|int, mixed>
-
The output views data.
Return values
array<string|int, mixed> —Return processed with output data that be able to merge with previous $output data in the action method.
generateUserFieldsKey()
Generate user fields key.
protected
generateUserFieldsKey([int $length = 8 ]) : array<string|int, mixed>
Generate keys that can be use in change email confirmation, register confirmation, etc.
Parameters
- $length : int = 8
-
The length of key.
Return values
array<string|int, mixed> —Return associative array with 'readableKey', 'encryptedKey' keys.
getConfig()
Get common use configuration between methods.
protected
getConfig() : array<string|int, mixed>
This method was called from doLoginAction(), indexAction(), resetAction() methods.
Return values
array<string|int, mixed>getPageHtmlClasses()
Get page HTML classes.
protected
getPageHtmlClasses([array<string|int, mixed> $classes = [] ]) : string
Parameters
- $classes : array<string|int, mixed> = []
-
The classes to set for this html page.
Tags
Return values
string —Return generated html classes names.
getPageHtmlTitle()
Get page HTML title including site name if it was set.
protected
getPageHtmlTitle(string $title[, string|null|false $siteName = false ]) : string
Parameters
- $title : string
-
The site title.
- $siteName : string|null|false = false
-
Site name should be string.
Set to empty string ornullwill not include the site name.
Set tofalseto automatic get the site name from config DB.
Tags
Return values
stringgetUserUrlsMethods()
Get URLs and methods about user pages.
protected
getUserUrlsMethods([string $user_id = '' ]) : array<string|int, mixed>
Parameters
- $user_id : string = ''
-
The user ID.
Return values
array<string|int, mixed> —Return associative array.
isUserLoggedIn()
Check if user is logged in.
protected
isUserLoggedIn([int $user_id = null ][, string $userlogin_session_key = '' ]) : bool
After called this method and it was true then you can access total sessions via totalLoggedInSessions property.
After called this method and cookie is valid then you can access cookie data via userSessionCookieData property.
If there is simultaneous login and user's setting is something that is not allowed (such as logout previous, logout all), it will be process here.
Parameters
- $user_id : int = null
-
The user ID. Set to
null(default) to auto detect from cookie. - $userlogin_session_key : string = ''
-
The logged in session key. Set to empty string (default) to auto detect from cookie.
Return values
bool —Return true if logged in, false for not.
isUserProxy()
Check if user is using proxy.
protected
isUserProxy() : bool
This method was called from doLoginAction() method.
Tags
Return values
bool —Return true if yes, false for no.
logoutUser()
Logout target user.
protected
logoutUser([array<string|int, mixed> $cookieData = [] ][, bool $logoutAllDevice = false ]) : mixed
Parameters
- $cookieData : array<string|int, mixed> = []
-
The associative array of cookie data. This value can get from
Cookieclass. The array keys are:
user_id(required).
sessionKey(optional) For delete specific session key fromuser_loginstable. - $logoutAllDevice : bool = false
-
Set to
trueto logout all device,falsefor specific session key.
maybeRunCron()
Maybe run cron job if config is set to not use server cron.
protected
maybeRunCron() : mixed
responseJson()
{@inheritDoc}
protected
responseJson(mixed $output) : string
Parameters
- $output : mixed
Return values
stringresponseXml()
{@inheritDoc}
protected
responseXml(mixed $output) : string
Parameters
- $output : mixed
Return values
stringsessionTraitLogoutAll()
Logout all succeeded login sessions, lock user account, send login link to user's email.
protected
sessionTraitLogoutAll(int $user_id, UserLoginsDb $UserLoginsDb, UserFieldsDb $UserFieldsDb) : mixed
This method also set cache that email was sent recently.
This method was called from isUserLoggedIn().
This method was called from LoginController->doLogin().
Parameters
- $user_id : int
- $UserLoginsDb : UserLoginsDb
- $UserFieldsDb : UserFieldsDb
setBasicConfig()
Setup basic PHP configurations such as default timezone.
protected
setBasicConfig() : mixed
setHeaderAllowOrigin()
Set header allow origin for CORS.
protected
setHeaderAllowOrigin() : mixed
validateLoginResetKey()
Validate login reset key.
protected
validateLoginResetKey(int $user_id, string $userEnteredLoginResetKey) : bool
This method was called from doLoginResetAction(), resetAction() methods.
Parameters
- $user_id : int
-
The user ID.
- $userEnteredLoginResetKey : string
-
The login reset key that user entered (readable one).
Return values
bool —Return true if success, false for failure.
isModuleExcute()
Check if current call is `Modules->execute()`
private
isModuleExcute() : bool
This method was called from maybeRunCron(), __construct().
Tags
Return values
bool —Return true if it is, false if it is not.
removeSensitiveCfgInfo()
Remove sensitive config info that contains non-site configuration.
private
removeSensitiveCfgInfo(array<string|int, mixed> $output) : array<string|int, mixed>
Parameters
- $output : array<string|int, mixed>
-
The output array that contain
configDbarray key.
Tags
Return values
array<string|int, mixed> —Return removed sensitive info.
sessionsTraitCheckIsLoggedInFromContainer()
Check is logged in from container if exists.
private
sessionsTraitCheckIsLoggedInFromContainer() : array<string|int, mixed>
The check data in container must not older than N seconds.
Tags
Return values
array<string|int, mixed> —Return indexed array where first index is UsersSessionsTrait object in the container if exists. This value can be null.
Second index is result of "is logged in". This value can be null.
sessionTraitLogoutPreviousSessions()
Logout all sessions before latest succeeded login. (logout only succeeded login).
private
sessionTraitLogoutPreviousSessions(int $user_id, UserLoginsDb $UserLoginsDb) : mixed
This method was called from isUserLoggedIn().
Parameters
- $user_id : int
- $UserLoginsDb : UserLoginsDb