UserCAS
extends UserDB
in package
uses
FileConfiguration
Represents the application user Handles session management, authentication through CAS, and authorization
Tags
Table of Contents
Constants
- CONFIG_FILE = "user.cas"
Properties
- $db : DBInstance
- $primaryTable : string
- $profile : array<string|int, mixed>
- $casPaths : array<string, array<string, string>>
- $configs : array<string, array<string|int, mixed>>
- $sessionName : string
- $sessionUserId : mixed
- $usersRepo : DataRepository
Methods
- __construct() : mixed
- Instantiates a new UserCAS by negotiating the login process with a configured CAS Server
- getAppConfiguration() : array<string|int, mixed>
- Provides a single instance of the global app configuration to all extenders of CoreObject
- getLogger() : Logger
- Provides a single instance of a configured Logger to all extenders of CoreObject
- getProfile() : array<string|int, mixed>
- Returns the User's profile
- getProfileValue() : mixed
- Retrieves a particular profile value from the User's profile
- hashPassword() : string|false
- Hash a plaintext password
- initiatelogIn() : void
- Redirect to the configured CAS Server's login URL
- isAdmin() : bool
- Checks if the User is an administrator
- isLoggedIn() : bool
- Checks if the user has a session
- logIn() : bool
- Log in a User
- logOut() : bool
- Log the User out from the application, then redirect to the configured CAS Server's logout URL
- processLogIn() : bool
- Processes the result of a CAS authentication request, associating an application user with their corresponding CAS record, and logging them into the application
- buildIn() : string
- Returns a parametrized IN clause for use in a prepared statement
- buildInsertStatement() : string|false
- Builds and executes an insert statement
- buildMultiRowInsertStatement() : bool
- Builds and executes a single insert statement that inserts multiple new records
- buildProfile() : void
- Builds the User's profile data which is exposed to the application
- buildUpdateStatement() : bool
- Builds and executes an update statement
- configurationFileExists() : bool
- Checks for the existence of a file with the given filename
- dbFormatDate() : string
- Returns an appropriate date format function for the SQL language
- dbNow() : string
- Returns an appropriate CURRENT TIME function for the SQL language
- dbTextMatch() : string
- Returns an appropriate text search function for the SQL language
- executeQuery() : array<string, array<string, string>>|false
- Execute a query and return the results as an array
- executeUpdate() : bool
- Execute an update query
- getConfigurationFromFileName() : array<string|int, mixed>
- Retrieves a config array by its corresponding filename
- getLastInsertId() : string|false
- Returns the id of the most recent insert query
- getPrimaryTable() : mixed
- Provides the name of the primary table associated with the instance
- getSessionName() : string
- Get the name of the session, which is used as a key within the $_SESSION array
- getSessionUserId() : mixed
- Get the unique identifier for the User as stored in $_SESSION
- logStatementError() : void
- Logs SQL errors to the logger
- queryWithIndex() : array<string|int, mixed>|false
- Query the DB and return the rows as a 1 or 2 dimensional indexed array
- quote() : string
- quoteArray() : array<string|int, string>
- setSessionName() : void
- Set the name of the session, which is used as a key within the $_SESSION array
- setSessionUserId() : void
- Set the unique identifier for the User as stored in $_SESSION
- loadConfigurationFile() : void
- Loads and parses a php ini file into an array keyed by ini sections
Constants
CONFIG_FILE
private
mixed
CONFIG_FILE
= "user.cas"
Properties
$db
protected
DBInstance
$db
An instance of the db class, providing the connection to the DB
$primaryTable
protected
string
$primaryTable
The name of the main db table associated with an instance of DBObject
$profile
protected
array<string|int, mixed>
$profile
An associative array of the User's profile data
$casPaths
private
array<string, array<string, string>>
$casPaths
A string array representing the CAS configuration
$configs
private
array<string, array<string|int, mixed>>
$configs
= []
An array of configuration arrays
$sessionName
private
string
$sessionName
A string scoping the user's session variables within their larger PHP $_SESSION array
$sessionUserId
private
mixed
$sessionUserId
A unique identifier for the User to be stored within their session data
$usersRepo
private
DataRepository
$usersRepo
A DataRepository representing the app's Users (assumes existence of 'username' and 'iscas' fields)
Methods
__construct()
Instantiates a new UserCAS by negotiating the login process with a configured CAS Server
public
__construct(array<string|int, mixed> $inputData, DataRepository $usersRepo) : mixed
Parameters
- $inputData : array<string|int, mixed>
-
The input data from the request
- $usersRepo : DataRepository
-
A DataRepository representing the app's Users (assumes existence of 'username' and 'iscas' fields)
getAppConfiguration()
Provides a single instance of the global app configuration to all extenders of CoreObject
public
getAppConfiguration() : array<string|int, mixed>
Return values
array<string|int, mixed>getLogger()
Provides a single instance of a configured Logger to all extenders of CoreObject
public
getLogger() : Logger
Return values
LoggergetProfile()
Returns the User's profile
public
getProfile() : array<string|int, mixed>
Return values
array<string|int, mixed>getProfileValue()
Retrieves a particular profile value from the User's profile
public
getProfileValue(string $field) : mixed
Parameters
- $field : string
-
The name of the profile value to retrieve
Return values
mixed —The value of the profile $field, null if the $field is not present on the profile
hashPassword()
Hash a plaintext password
public
static hashPassword(string $plaintext) : string|false
Parameters
- $plaintext : string
-
The plaintext password
Return values
string|false —The password hash
initiatelogIn()
Redirect to the configured CAS Server's login URL
public
initiatelogIn() : void
isAdmin()
Checks if the User is an administrator
public
isAdmin() : bool
Return values
boolisLoggedIn()
Checks if the user has a session
public
isLoggedIn() : bool
Return values
bool —True if logged in, false if not
logIn()
Log in a User
public
logIn(mixed $username, mixed $password) : bool
Parameters
- $username : mixed
-
The User's username
- $password : mixed
-
The User's password
Return values
bool —True on successful login, false on anything else
logOut()
Log the User out from the application, then redirect to the configured CAS Server's logout URL
public
logOut() : bool
Return values
bool —True on success, false on failure
processLogIn()
Processes the result of a CAS authentication request, associating an application user with their corresponding CAS record, and logging them into the application
public
processLogIn(string $ticket) : bool
Parameters
- $ticket : string
-
The ticket provided by the CAS Server
Return values
bool —True on successful login, false on anything else
buildIn()
Returns a parametrized IN clause for use in a prepared statement
protected
buildIn(array<string|int, mixed> $ar, array<string|int, mixed> &$bindparams[, string $varprefix = 'v' ]) : string
Parameters
- $ar : array<string|int, mixed>
-
An array of values representing the contents of the IN clause
- $bindparams : array<string|int, mixed>
-
A reference to the caller's array of binded parameters
- $varprefix : string = 'v'
-
Can be used to avoid bind parameter naming collisions when calling multiple times within 1 statement
Return values
string —The resulting IN clause
buildInsertStatement()
Builds and executes an insert statement
protected
buildInsertStatement(array<string|int, mixed> $data[, string $table = null ]) : string|false
Parameters
- $data : array<string|int, mixed>
-
An associative array (ColumnName->Value) of data representing the new DB record
- $table : string = null
-
Optional - The table to insert the new record into. Defaults to $primaryTable
Return values
string|false —Returns the ID of the new record on success, false on failure
buildMultiRowInsertStatement()
Builds and executes a single insert statement that inserts multiple new records
protected
buildMultiRowInsertStatement(array<string|int, array<string, string>> $rows[, string $table = null ]) : bool
Parameters
- $rows : array<string|int, array<string, string>>
-
An array of associative arrays (ColumnName->Value) of data representing the new DB records
- $table : string = null
-
Optional - The table to insert the new records into. Defaults to $primaryTable
Return values
bool —True on success, false on failure
buildProfile()
Builds the User's profile data which is exposed to the application
protected
buildProfile() : void
buildUpdateStatement()
Builds and executes an update statement
protected
buildUpdateStatement(string $id, array<string|int, mixed> $data[, string $table = null ]) : bool
Parameters
- $id : string
-
The id of the record to be updated
- $data : array<string|int, mixed>
-
An associative array (ColumnName->Value) of data representing the updated data
- $table : string = null
-
Optional - The table to insert the new record into. Defaults to $primaryTable
Return values
bool —True on success, false on failure
configurationFileExists()
Checks for the existence of a file with the given filename
protected
configurationFileExists(string $configurationFileName) : bool
Parameters
- $configurationFileName : string
-
The name of the file without extension or path
Return values
booldbFormatDate()
Returns an appropriate date format function for the SQL language
protected
dbFormatDate(string $field) : string
Parameters
- $field : string
-
The name of the field to format
Return values
stringdbNow()
Returns an appropriate CURRENT TIME function for the SQL language
protected
dbNow() : string
Return values
stringdbTextMatch()
Returns an appropriate text search function for the SQL language
protected
dbTextMatch(string $fields, string $value) : string
Parameters
- $fields : string
-
The fields to use for the search (field1,field2,..)
- $value : string
-
The search criteria
Return values
stringexecuteQuery()
Execute a query and return the results as an array
protected
executeQuery(mixed $sql[, array<string|int, mixed> $bindparams = NULL ]) : array<string, array<string, string>>|false
@param string $sql the SQL query
Parameters
- $sql : mixed
- $bindparams : array<string|int, mixed> = NULL
-
: an array of values to be binded by PDO to any query parameters
Return values
array<string, array<string, string>>|false —A two dimensional array representing the resulting rows: array(array("id"=>1,"field"=>"value1"),array("id"=>2","field"=>"value2")), false on failure
executeUpdate()
Execute an update query
protected
executeUpdate(mixed $sql[, array<string|int, mixed> $bindparams = NULL ]) : bool
@param string $sql The SQL query
Parameters
- $sql : mixed
- $bindparams : array<string|int, mixed> = NULL
-
An array of values to be binded by PDO to any query parameters
Return values
bool —True on success, false on anything else
getConfigurationFromFileName()
Retrieves a config array by its corresponding filename
protected
getConfigurationFromFileName(string $configurationFileName) : array<string|int, mixed>
Parameters
- $configurationFileName : string
-
The name of the file without extension or path
Return values
array<string|int, mixed>getLastInsertId()
Returns the id of the most recent insert query
protected
getLastInsertId() : string|false
Return values
string|false —The id of the last inserted record
getPrimaryTable()
Provides the name of the primary table associated with the instance
protected
getPrimaryTable() : mixed
@return string
getSessionName()
Get the name of the session, which is used as a key within the $_SESSION array
protected
getSessionName() : string
Return values
string —The name of the session
getSessionUserId()
Get the unique identifier for the User as stored in $_SESSION
protected
getSessionUserId() : mixed
Return values
mixed —$userId The User's ID
logStatementError()
Logs SQL errors to the logger
protected
logStatementError(array<string|int, string> $error[, string $sql = null ]) : void
Parameters
- $error : array<string|int, string>
-
A PDO::errorInfo() error or similar structure
- $sql : string = null
-
The SQL query that triggered the error
queryWithIndex()
Query the DB and return the rows as a 1 or 2 dimensional indexed array
protected
queryWithIndex(string $sql, mixed $index[, string $findex = NULL ][, mixed $bindparams = NULL ]) : array<string|int, mixed>|false
Parameters
- $sql : string
-
The query string @param string $index The table's primary key
- $index : mixed
- $findex : string = NULL
-
An optional foreign key from the table (when used, returns a 2 dimensional array, indexed first by $index, second by $findex) @param mixed[] $bindparams An array of values to be binded by PDO to any query parameters
- $bindparams : mixed = NULL
Return values
array<string|int, mixed>|false —$results A two (or three) dimensional array representing the resulting rows: array(array("id"=>1,"field"=>"value1"),array("id"=>2","field"=>"value2")), false on failure
quote()
protected
quote(string $value) : string
Parameters
- $value : string
-
The value to escape
Tags
Return values
string —The escaped $value
quoteArray()
protected
quoteArray(array<string|int, string> $ar) : array<string|int, string>
Parameters
- $ar : array<string|int, string>
-
An array of string values to escape
Tags
Return values
array<string|int, string> —The escaped array
setSessionName()
Set the name of the session, which is used as a key within the $_SESSION array
protected
setSessionName(string $sessionName) : void
Parameters
- $sessionName : string
-
The name of the session
setSessionUserId()
Set the unique identifier for the User as stored in $_SESSION
protected
setSessionUserId([mixed $sessionUserId = null ]) : void
Parameters
- $sessionUserId : mixed = null
-
The User's ID
loadConfigurationFile()
Loads and parses a php ini file into an array keyed by ini sections
private
loadConfigurationFile(string $configurationFileName) : void
Parameters
- $configurationFileName : string
-
The name of the file without extension or path