I am interested in using ion auth for a project of mine which is running on the HMVC pattern. The application is written in Codeigniter.
The problem I face is once the ion auth is placed in the /app/modules/auth folder, when I try to access the module I get the below error:
HTTP Error 500 (Internal Server Error):
An unexpected condition was encountered while the server was attempting to fulfill the request.
Please help me out here, I am sure that I am having some sort of a configuration/path problem but just can't figure out where.
I have simply downloaded the ion_auth files from github and placed the extracted files as it is in the module folder I removed all the lines where it loads the libraries such as database, session since I have used the config to auto load them. But I left the loading of the ion_auth library.
In the module folder modules/auth I have a similar application structure with the module specific config, libraries, etc folders.
Let me know where I must have done wrong, I will continue to search and fix this problem and post if I have any luck.
The solutions given by @ciuser and @Dash worked for me but auto loading the ion_auth does not because to the language files. So I kept the language folder content in the application/language folder and rest as a module which works like a charm.
I got CI 2.1 + Modular Extensions 5.4 + Ion Auth 2 all working.
Since, I didn't really see any exact info on this and the stuff I did see, had a bunch of things like routing and stuff that I couldn't get working the way they were done, I decided to share the what I did to accomplish this.
At first I was struggling with it, but then I had to sit back and think about what was going on.
After that, it was actually pretty straight forward, only a couple of gotchas…
The Steps I took to get ION AUTH working with CodeIgniter + MX HMVC
Install CodeIgnter (I actually used an existing project I was working on, so it wasn't a fresh clean install. I removed "index.php" and I had HMVC already installed the recommended way. This is about Ion Auth anyway.)
Get the latest version of Ion Auth.
Instead of installing Ion Auth in
application/third_party
, Unzip it, and rename the resulting directory toauth
. Put it inapplication/modules
which results inapplication/modules/auth
.Run Ion Auth's sql to set up the tables.
In
application/config/autoload.php
update the line to:In
modules/auth/libraries/Ion_auth.php
update the lines in__construct
to:In
modules/auth/models/ion_auth_model.php
update the lines in__construct
to:Change the
auth
controller (modules/auth/controllers/auth.php
) to extendMX_Controller
instead of the defaultCI_Controller
.Now, in
auth.php
, make sure you change all$this->data
to$data
- (Make sure to read about this below!!).Move the files and directories in
modules/auth/views/auth
tomodules/auth/views
resulting inmodules/auth/views
with no lower levelauth
dir - (Make sure to read about this below!!).Add a routes.php file into modules/auth/config and add the following line:
Now, go to
http://yoursite/auth
and everything should be good to go!Gotchas
First off.. DO NOT AUTOLOAD THE LIBRARIES OR MODELS in the
application/config/autoload.php
file. Do them in the modules explicitly with$this->load->library("whatever")
, etc…That one stumped me for quite a while.
I forgot to mention that in my current install, I have already removed index.php from the URL and I have a .htaccess file in the the base of my installation. If things don't work, it's probably something with the RewriteBase here. This is the .htaccess I use:
=================================
When I updated the modules/auth/controllers/auth.php to extend MX_Controller instead of CI_Controller, I was getting a series of errors after. The first of these errors was:
To resolve this error, I changed all
$this->data
to$data
in theauth.php
controller`.After fixing this problem, when I would go to
auth
, I would get an error like this:Apparently, it can't find the view files in it's own
views
dir. Ahh. Not exactly true though after thinking about it. The reason is because it's trying to findmodule/file_to_view
and thefile_to_view
should be inviews
! Not inauth/views/auth
!! So, we need to move everyting up from theauth
dir into theviews
dir!After that, everything works fine! I can cross load models, libraries and controllers in other modules and I can do Modules::run() in views and everything else!
I hope this helps someone else. Good Luck!
I don't see any reason for it to not work . check out pyrocms
They are using ionauth with hmvc.
if you don't get it working, just upload the files in normal ci directories and check if it works without any problems.
This is what I did following ciuser's guideline but with some changes:
Move third_party/MX to CI/application/third_party.
Move core/MY_Loader.php and core/MY_Router.php to CI/application/core.
Move the following Ion Auth folders to CI/application/modules/auth folder: config, controllers, language, libraries, models.
Move the files under Ion Auth/views folder to CI/application/modules/auth/views. (Without one extra layer of auth as in Ion Auth.)
Run Ion Auth sql in database.
I wrote a bash script to Get and Install CodeIgniter 2 + Modular Extensions 5.4 + Ion Auth 2.
Here it is. Good luck and let me know if there are any problems with it.
Try this:
Add route in config/routes.php :
$route['auth/(.*)'] = 'users/auth/$1';
Autoload ion_auth -
$autoload['libraries'] = array('database','session','users/ion_auth');
Edit following paths in modules/users/library/ion_auth.php :