flexi auth is a free user authentication (User login) library for use with the CodeIgniter 2.0+ framework.
The flexi auth library initially started out as a modified version of the popular Ion Auth library. As the original library was tweaked with feature after feature being added, the original code base had transformed into a new library all of its own.
Below is a compiled list of the core features included within the flexi auth library.
The features in flexi auth are designed to be modularised, so that you can use bits and pieces of different features without needing to setup other features that are not required.
If you want a login system that requires users to activate their account via an email, but to allow them a 30 minute access period immediately upon registration - just use and define the functions and settings you need.
If the default session/table names clash with your existing setup, or maybe simply don't match your coding conventions, then simply change just one setting via the libraries config file.
The idea of flexi auth is to let you build the site, the way you want it built, rather than being confined to a one path design flow.
If a user updates their email address, functions within the library can be used to require that the new email address must be validated by the user clicking a link sent to the new email address, before it is activated.
This method prevents misspelt email addresses that would otherwise prevent future login.
flexi auth includes two different CAPTCHA functions, the popular Google reCAPTCHA and a basic math based question and answer CAPTCHA.
Using reCAPTCHA requires each site to apply for a free API key from Google before the reCAPTCHA can be deployed.
The math based Q&A CAPTCHA is custom to the flexi auth library and asks simple addition and subtraction questions.
The CAPTCHAs would typically be used during registration or login, but implementation of them is completely optional.
The library further includes other functions that can be used to detect when to deploy the CAPTCHA based on specific IP addresses that have been related to numerous failed login attempts.
A config setting can be defined to instruct the library to automatically validate a users login credentials are still valid on every page load.
If a user is logged into the same account on multiple computers, if they chose to logout of all session via one computer, then a user on the other computer will not be able to continue browsing the site until they re-login.
Additionally, if an administrator was to suspend an account whilst the user was on the site, the users credentials would be removed the next time they refreshed the page.
It's likely that the majority of pages on your site will not require the complete functionality of the flexi auth library, which would result in wasting memory resources loading parts of the library that would not be used.
To solve this, the functionality of flexi auth is split into two different libraries, each with a different intended purpose.
The 'lite library' is primarily used for three purposes, validating a users login credentials and permissions, getting a users account data or managing status and error messages.
These are core features that are most likely to be required on most pages throughout your site, therefore the 'lite library' is designed to be small enough to include on all pages.
The 'standard library' is used for functions that tend to have a single purpose, as such as user login, deploying CAPTCHAs and sending forgotten password emails.
These features are likely to only be required by specific pages, and so the library should only be included when needed.
Note: When including the 'standard library', it extends the 'lite library', so all features within both libraries are then available.
Whilst flexi auth offers a good ground base of features for a fully fledged user authentication system, here is a list of some of the more notable features that are not included within the library.
The flexi auth library does not include any features to login via a third party api like Facebook, Twitter and OpenID.