Okay I know already that the code I’m going to post here is quite a big mess: it will work under
some circumstances but it’s buggy and insecure. I will update this post as soon as I figure out
how to make this code better (expecially the UserSession part).
Users tables
Users go to the af_users table, where the password is stored as clear text. Even if that’s bad
practice it’s easy to fix and it’s not the issue here… there are bigger problems!
Then I’m creating a Sentosa::Users package that contains functions to manage users.
At the moment it’s like this:
then I will add change password, groups managements, or other useful funcions.
Sessions table
Here’s where I should do some improvements otherwise it’s easy to hack cookies and get a working session without the need of getting authenticated.
Sessions goes in the af_sessions table:
and the Sentosa::UserSessions package is like this:
Authentication: Base.mp
On base.mp I’m checking if username and passwords are provided. If they are I will call auth_user
to see if they are correct, and if they are I will create a new session.
Then I will check the provided session (if any) to see if it’s still valid (here’s some extra work
is required) and if it is not expired. Here’s the final code, but I know already that I should move
some parts outside in a proper package:
Okay I’m not too proud of this code, I know it’s not high quality, but at least I could move on and see my application working.
I’ll come back to this code at a later time.