Best approach to providing app congurations?

This is more about theory than coding so I hope I have the right place.
I would very much appreciate some input as to the best approach on how
to offer different options in my app depending on configuration criteria
and current user.

Some examples of what I want to do I guess would be a help.

Firstly I have an administration control panel that administrators can
log into and do the usual stuff that admins do :slight_smile:
The site may have different configration switches that determine what
options are available in the administration panel.
For example the site may be configured to have blogs enabled.
Obviously if blogs are not enabled then there should be no
administration options to maintain blogs other than to enable them.
I though I might use a site_configuration table to determine what site
"add on's" are available and what are enabled.

A user can have different levels of access.
Some user roles will not have access to the administration panel at all.
For example users that are logged in as members i.e. users with a role
of member will not be able to log in as administrators but will be able
to view their own profile and will be able to access areas of the site
that non logged in users can't see.

I'm using a user_roles table to record a users role where a user can
have many roles therefore allowing for a user to be both an
administrator and a member.

That just about covers the requirement although there are more roles and
more functionality than mentioned.

So the question comes down to how best to achieve site configuration
options and also user access options.

Current thoughts are that I could provide the site configurations as
some kind of plug in or possibly a better solution might be to have
specific menu options that only visible according to the state of the
current user and the site configuration settings.

One concern I have is that I don't want to clutter up the views with too
much conditional logic for options that may never even exist for that
particular site.

I have implemented my own authoridsation process based around AWDWR's
authentication solution but I was wondering if authlogic may be asble to
provide a better answer to the user role scenarios?

Hope that makes sense and any input as to best approach would be greatly
appreciated.

p.s. target language is Rails 2.3.23 but will be moving on to 2.3.4
ASAP.

James West wrote:

This is more about theory than coding so I hope I have the right place.
I would very much appreciate some input as to the best approach on how
to offer different options in my app depending on configuration criteria
and current user.

Some examples of what I want to do I guess would be a help.

Firstly I have an administration control panel that administrators can
log into and do the usual stuff that admins do :slight_smile:
The site may have different configration switches that determine what
options are available in the administration panel.
For example the site may be configured to have blogs enabled.
Obviously if blogs are not enabled then there should be no
administration options to maintain blogs other than to enable them.
I though I might use a site_configuration table to determine what site
"add on's" are available and what are enabled.

A user can have different levels of access.
Some user roles will not have access to the administration panel at all.
For example users that are logged in as members i.e. users with a role
of member will not be able to log in as administrators but will be able
to view their own profile and will be able to access areas of the site
that non logged in users can't see.

I'm using a user_roles table to record a users role where a user can
have many roles therefore allowing for a user to be both an
administrator and a member.

That just about covers the requirement although there are more roles and
more functionality than mentioned.

So the question comes down to how best to achieve site configuration
options and also user access options.

Current thoughts are that I could provide the site configurations as
some kind of plug in or possibly a better solution might be to have
specific menu options that only visible according to the state of the
current user and the site configuration settings.

One concern I have is that I don't want to clutter up the views with too
much conditional logic for options that may never even exist for that
particular site.

I have implemented my own authoridsation process based around AWDWR's
authentication solution but I was wondering if authlogic may be asble to
provide a better answer to the user role scenarios?

Hope that makes sense and any input as to best approach would be greatly
appreciated.

p.s. target language is Rails 2.3.23 but will be moving on to 2.3.4
ASAP.

I have no idea if this is the best method by any means, but I have used it before with no problems:

I created a model called AppConfig which had an id, a key and a value. I could set the key to the name of the configuration (such as "allow_new_signups") and then set the value as required.

Then all I needed to do was AppConfig.find_by_key("allow_new_signups") and I have my configurations back.

As I say, there are possibly much better ways to do this, but it worked fine for my needs. YMMV.

Hope this helps.

Matt

Matt Harrison wrote:

I have no idea if this is the best method by any means, but I have used
it before with no problems:

I created a model called AppConfig which had an id, a key and a value. I
could set the key to the name of the configuration (such as
"allow_new_signups") and then set the value as required.

Then all I needed to do was AppConfig.find_by_key("allow_new_signups")
and I have my configurations back.

As I say, there are possibly much better ways to do this, but it worked
fine for my needs. YMMV.

Hope this helps.

Matt

Thankyou Matt.
I would like to explore that option further. I think it has potential
:slight_smile:
Very much appreciated the input

James