Part of the EllisLab Network
   
1 of 7
1
YAAS ::  Yet Another Authentication System :: 0.0.1
Posted: 07 November 2008 04:59 PM   [ Ignore ]  
Research Assistant
Avatar
RankRankRank
Total Posts:  350
Joined  08-29-2008

UPDATE: November 18 2011: Currently working on a full Version 1 of this. However it is moving slow since I have to pay the bills.
I will release as soon as I can.

Until then use asis, I will not be making updates. Sorry

YAAS: Yet Another Authentication System

UPDATE LOG:
6/24/2009 - Initial Beta Release - Version 0.0.1
6/8/2009 - Preview Release

================================================================================
UPDATE: 6/24/2009 - Version 0.0.1

Release Info:
This is a full featured release. It has yet to be thoroughly tested however. Things that are still missing are: Paypal Integration for subscriptions. Enforcement of Start/End Dates assigned to permissions. Email templates are not completed yet. But functionality is there to support them. (I think)

The Idea
YAAS wont be your basic auth system. It will be running on top of a few things

1. Data Mapper DMZ Edition I started using ORM at work and it makes things simple. Thus why I want to use it. Also in my opinion speeds up development time.

2. View Object. A partials rendering templating engine. Works kinda like the view loader with CI. However supports rendering partials to areas on a template. Im open for suggestions here but smarty is out of the question (too much overhead…)

Now onto the fun stuff!
Here are the goals of this project as of right now

1. Role based restriction based on Class => Method relations in a sense you can create a artificial CRUD environment. Also will support subscriptions (with pay pal integration) with the use of Start and End times.

2. Individual user permissions. Same as Roles just directly to the user.

3. Move the config to the database, but still have the config file for defaults

4. Login, Registration, Forgot password. Your basic Authentication Library stuff…

5. Anything you guys can think of or I think of while doing this!

================================================================================
Installation
1. Drag and drop the application folder into your appropriate place. (Normally system folder)
2. Import the database
3. Make sure all your config files are setup.
4. Add datamapper, database, session to your autoload file for libraries. (system/applications/config/)

Requirements
All are included with this release
Libraries: * marks CI Native
1. database*
2. datamapper
3. session*
4. view
5. yaas

Helpers
* marks CI Native, ** Marks Extended
1. array**
2. string**
3. url*
4. date*
5. cookie*
6. email*

Yaas should load most if not all of these…

Downloads:
Releases:
Current Release 0.0.1

User Guide * In Development However the source is pretty well documented *

 Signature 

421 Entertainment :: YAAS - Yet Another Authentication System :: Error Logger :: DB Configs

Profile
 
 
Posted: 07 November 2008 06:01 PM   [ Ignore ]   [ # 1 ]  
Grad Student
Avatar
Rank
Total Posts:  68
Joined  07-22-2007

Wow, I really like your ideas! Especially the permissions concept. I’m just not sure why you need a temporary table for unactivated accounts. You could just add an additional boolean field on the original users table called “activated” or something like that. On the other hand, maybe there would be more flexibility available with temp table. Either way, I don’t think there is a big difference and I am not in position to decide. smile

Good luck! wink

 Signature 

Sprinkle - Asset Management Library | FlamingGrowl - GNTP library | Twiggy - Twig template engine implementation for CodeIgniter
You will have to excuse me for my sometimes poor English.

Profile
 
 
Posted: 07 November 2008 06:13 PM   [ Ignore ]   [ # 2 ]  
Research Assistant
Avatar
RankRankRank
Total Posts:  350
Joined  08-29-2008

The reason for the temp table is it can give more accurate figures for registred users.

The primary purpose of this project is to run on my game im creating. However alot of people sign up but dont actually play the game.

When a user signs up they get a few tables for there stuff (1 row in each table)
user (contains username, password that sort of stuff)
user_data (the games data, level, experience etc…)
user_info (name, intrests, hobbies, profile, etc…)
user_config (show profile, timezone etc…

So by only adding the user to a temp table until they activate there account it removes the other 4 tables… And allows me to track who actually activated there account without having to say check for the flag.

Make a bit more sense?


Any features you would like to see that are not there?

WOops forgot to add DB/Cookie sessions

 Signature 

421 Entertainment :: YAAS - Yet Another Authentication System :: Error Logger :: DB Configs

Profile
 
 
Posted: 07 November 2008 07:05 PM   [ Ignore ]   [ # 3 ]  
Sr. Research Associate
Avatar
RankRankRankRankRank
Total Posts:  2774
Joined  07-27-2006

What is the data scheme for a user? How easily extensible is it?

 Signature 

Check out the Template Library
Oh yeah, I tweet, too (regarding CodeIgniter on occassion).

Profile
 
 
Posted: 07 November 2008 07:21 PM   [ Ignore ]   [ # 4 ]  
Research Assistant
Avatar
RankRankRank
Total Posts:  350
Joined  08-29-2008

This is what im using at the moment

CREATE TABLE IF NOT EXISTS `user` (
  `
user_idint(10unsigned NOT NULL auto_increment,
  `
usernamevarchar(255NOT NULL,
  `
email_addressvarchar(255NOT NULL,
  `
passwordvarchar(255NOT NULL,
  `
register_dateint(10unsigned NOT NULL,
  `
account_verificiation_codevarchar(255NOT NULL,
  `
account_statusint(11NOT NULL default '1',
  `
account_status_reasontext NOT NULL,
  
PRIMARY KEY  (`user_id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

--
-- 
Table structure for table `user_data`
--

CREATE TABLE IF NOT EXISTS `user_data` (
  `
user_idint(10unsigned NOT NULL auto_increment,
  `
donator_daysbigint(20unsigned NOT NULL default '0',
  `
levelbigint(20unsigned NOT NULL default '1',
  `
experiencedecimal(10,4unsigned NOT NULL default '0.0000',
  `
currency_mainbigint(20unsigned NOT NULL default '1000',
  `
currency_secondarybigint(20unsigned NOT NULL default '25',
  `
vital_onebigint(20unsigned NOT NULL default '0',
  `
vital_twobigint(20unsigned NOT NULL default '0',
  `
vital_threebigint(20unsigned NOT NULL default '0',
  `
vital_fourbigint(20unsigned NOT NULL default '0',
  `
vital_one_maxbigint(20unsigned NOT NULL default '0',
  `
vital_two_maxbigint(20unsigned NOT NULL default '0',
  `
vital_three_maxbigint(20unsigned NOT NULL default '0',
  `
vital_four_maxbigint(20unsigned NOT NULL default '0',
  `
stat_onedecimal(10,4unsigned NOT NULL default '10.0000',
  `
stat_twodecimal(10,4unsigned NOT NULL default '10.0000',
  `
stat_threedecimal(10,4unsigned NOT NULL default '10.0000',
  `
stat_fourdecimal(10,4unsigned NOT NULL default '10.0000',
  `
stat_fivedecimal(10,4unsigned NOT NULL default '10.0000',
  
PRIMARY KEY  (`user_id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

--
-- 
Table structure for table `user_group`
--

CREATE TABLE IF NOT EXISTS `user_group` (
  `
user_idint(10unsigned NOT NULL,
  `
group_idint(10unsigned NOT NULL default '1',
  
UNIQUE KEY `user_group` (`user_id`,`group_id`)
ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- 
Table structure for table `user_info`
--

CREATE TABLE IF NOT EXISTS `user_info` (
  `
user_idint(10unsigned NOT NULL auto_increment,
  `
aimvarchar(255) default NULL,
  `
yimvarchar(255) default NULL,
  `
msnvarchar(255) default NULL,
  `
icqvarchar(255) default NULL,
  `
skypevarchar(255) default NULL,
  `
websitevarchar(255) default NULL,
  `
avatarvarchar(255) default NULL,
  `
signaturetext,
  
PRIMARY KEY  (`user_id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

--
-- 
Table structure for table `user_verification_code`
--

CREATE TABLE IF NOT EXISTS `user_verification_code` (
  `
user_idint(10unsigned NOT NULL,
  `
email_addressvarchar(255NOT NULL,
  `
account_verification_codevarchar(255NOT NULL,
  
UNIQUE KEY `user_id` (`user_id`),
  
UNIQUE KEY `account_verification_code` (`account_verification_code`)
ENGINE=MyISAM DEFAULT CHARSET=latin1


However I will be changing this with my new ideas that I came up with last night. (its an old database)

Basicaly the user table is soly responsible for the user authentication

and everything else extends that user_info for contact info and so on. So basically just add another table is as simple as it gets

 Signature 

421 Entertainment :: YAAS - Yet Another Authentication System :: Error Logger :: DB Configs

Profile
 
 
Posted: 07 November 2008 07:27 PM   [ Ignore ]   [ # 5 ]  
Grad Student
Avatar
Rank
Total Posts:  68
Joined  07-22-2007
tdktank59 - 07 November 2008 11:13 PM

Make a bit more sense?

Absolutely. Thanks for the explanation, I knew there was an idea behind this temp table. grin

tdktank59 - 07 November 2008 11:13 PM


Any features you would like to see that are not there?

I can’t think of more ideas at the moment, since I don’t really develop very complex or large account management systems and I don’t have enough experience in this. However, my advice would to make your Authentication System as flexible as possible (so that others could extend or modify it without big code changes) and not just feature-full if you know what I mean. wink

 Signature 

Sprinkle - Asset Management Library | FlamingGrowl - GNTP library | Twiggy - Twig template engine implementation for CodeIgniter
You will have to excuse me for my sometimes poor English.

Profile
 
 
Posted: 07 November 2008 07:45 PM   [ Ignore ]   [ # 6 ]  
Sr. Research Associate
Avatar
RankRankRankRankRank
Total Posts:  2774
Joined  07-27-2006

I guess the problem with “it’s as simple as adding a table” is that it’s not that simple. Any extension to the user object in this fashion means having to write CRUD code to correspond with the new extensions. The API breaks down.

 Signature 

Check out the Template Library
Oh yeah, I tweet, too (regarding CodeIgniter on occassion).

Profile
 
 
Posted: 08 November 2008 12:52 AM   [ Ignore ]   [ # 7 ]  
Research Assistant
Avatar
RankRankRank
Total Posts:  350
Joined  08-29-2008

I don’t follow what your talking about.

If you add a new application, module what ever it may be. You don’t extend the user table. You add a new table, This new application then would (could) have references to the other tables, However the new application would run any of its new data from its own table.

All you would have to do to make the table “friendly” with the system is to add the correct foreign keys to the new table in this case it would be user_id. The creator of the new application would have to setup the proper scripts to have the table populated with what ever data is needed.

So if you can explain to me what you are talking about here that would be appreciated. My number one goal (or two i forget what im up to lol) is to create a extensible library that can be added onto with little if no effort.

 Signature 

421 Entertainment :: YAAS - Yet Another Authentication System :: Error Logger :: DB Configs

Profile
 
 
Posted: 08 November 2008 04:25 AM   [ Ignore ]   [ # 8 ]  
Sr. Research Associate
Avatar
RankRankRankRankRank
Total Posts:  2774
Joined  07-27-2006

Just pretend I don’t know what I’m talking about on this one. No use.

 Signature 

Check out the Template Library
Oh yeah, I tweet, too (regarding CodeIgniter on occassion).

Profile
 
 
Posted: 08 November 2008 04:39 AM   [ Ignore ]   [ # 9 ]  
Research Assistant
Avatar
RankRankRank
Total Posts:  350
Joined  08-29-2008

Well let me know… Im trying to make this extensible and if this could pose a problem I would like to try and over come it…

 Signature 

421 Entertainment :: YAAS - Yet Another Authentication System :: Error Logger :: DB Configs

Profile
 
 
Posted: 08 November 2008 05:57 AM   [ Ignore ]   [ # 10 ]  
Summer Student
Avatar
Total Posts:  12
Joined  07-18-2007

Download link pleas…

THX Adam

Profile
 
 
   
1 of 7
1