We are currently working on a solution to centralize our userbase.
The central userbase will contain primary account information that
will be extended on an application-specific basis. For instance, all
users of our applications will have the following:
first_name
last_name
email
phone
...etc...
Application 'X', however, might extend this account information so
that it includes application_x_admin, application_x_group, etc. so
that these attributes are only available to Application 'X'.
Application 'Y' could similarly have added attributes or it could
simply utilize the defaults for our userbase.
The questions follows -- How do we store account information separate
from application-specific user data and share that account information
across multiple applications?
The solution needs to...
--Store the account information in a separate database
--Avoid as much duplication as possible to avoid unnecessary
difficulty for modifications
--Easily allow a login, logout, authenticate ability from within an
application (registration, etc. will be in a separate application)
--Easy to retrieve/search the userbase from within applications,
including direct access to userbase attributes (first_name, etc.) and
find methods (find_by_first_name, etc.)
We are currently working on a solution to centralize our userbase.
The central userbase will contain primary account information that
will be extended on an application-specific basis. For instance, all
users of our applications will have the following:
first_name
last_name
email
phone
...etc...
Application 'X', however, might extend this account information so
that it includes application_x_admin, application_x_group, etc. so
that these attributes are only available to Application 'X'.
Application 'Y' could similarly have added attributes or it could
simply utilize the defaults for our userbase.
The questions follows -- How do we store account information separate
from application-specific user data and share that account information
across multiple applications?
The solution needs to...
--Store the account information in a separate database
--Avoid as much duplication as possible to avoid unnecessary
difficulty for modifications
--Easily allow a login, logout, authenticate ability from within an
application (registration, etc. will be in a separate application)
--Easy to retrieve/search the userbase from within applications,
including direct access to userbase attributes (first_name, etc.) and
find methods (find_by_first_name, etc.)
When I've done this i've had a user class (whose attributes are login
and any app specific attributes) and user_detail which contains shared
info. The shared info is only changed in the user authentication app
and it propagates that info to the other apps.