diff options
author | aurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46> | 2008-07-03 23:33:08 +0000 |
---|---|---|
committer | aurynn_cmd <aurynn_cmd@4979c152-3d1c-0410-bac9-87ea11338e46> | 2008-07-03 23:33:08 +0000 |
commit | 8f01bd1dd589d368b5d4d077979d3d4715a3a434 (patch) | |
tree | 90444ddab4c152ccb1472d0d67e8bfaf9b16593b | |
parent | f31f0fd95aa2eb2e61f09900a2a011984da5a274 (diff) |
Updates and clarifications to the new Admin interface. Testing to commence on Mon, Jul 7th.
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2183 4979c152-3d1c-0410-bac9-87ea11338e46
-rw-r--r-- | LedgerSMB/DBObject/Admin.pm | 41 | ||||
-rw-r--r-- | LedgerSMB/DBObject/User.pm | 12 | ||||
-rw-r--r-- | UI/Admin/edit_group.html | 28 | ||||
-rw-r--r-- | UI/Admin/edit_user.html | 14 | ||||
-rw-r--r-- | scripts/admin.pl | 104 | ||||
-rw-r--r-- | sql/modules/admin.sql | 41 |
6 files changed, 166 insertions, 74 deletions
diff --git a/LedgerSMB/DBObject/Admin.pm b/LedgerSMB/DBObject/Admin.pm index 6b54a7d4..fae330a8 100644 --- a/LedgerSMB/DBObject/Admin.pm +++ b/LedgerSMB/DBObject/Admin.pm @@ -15,7 +15,7 @@ sub save { $self->error("Cannot save an Adminstrator object."); } -sub save_employee { +sub save_user { my $self = shift @_; @@ -27,7 +27,7 @@ sub save_employee { $self->{entity_id} = $entity->{id}; - my $user_id = shift @{ $self->exec_method( procname => "admin_save_user" ) }; + my $user_id = shift @{ $self->exec_method( procname => "admin__save_user" ) }; $self->merge($user_id); my $person = LedgerSMB::DBObject::Person->new( base=>$self, copy=>'list', @@ -89,17 +89,17 @@ sub save_employee { $user->save(); } -sub save_roles_preferences { +sub save_roles { my $self = shift @_; my $user = LedgerSMB::DBObject::User->new( base=>$self, copy=>'all' ); - my $roles = $self->exec_method( procname => "admin_all_roles" ); - my $user_roles = $self->exec_method(procname => "admin_get_user_roles", args=>[ $self->{ username } ] ); + my $roles = $self->exec_method( procname => "admin__all_roles" ); + my $user_roles = $self->exec_method(procname => "admin__get_user_roles", args=>[ $self->{ username } ] ); my %active_roles; - for my $role (@{$user_roles}) { + for my $role (@{ $user_roles }) { # These are our user's roles. @@ -112,25 +112,24 @@ sub save_roles_preferences { # These roles are were ALL checked on the page, so they're the active ones. - if ($active_roles{$role} && $self->{incoming_roles}->{$role}) { + if ($active_roles{$role} && $self->{$role}) { # do nothing. } - elsif ($active_roles{$role} && !($self->{incoming_roles}->{$role} )) { + elsif ($active_roles{$role} && !($self->{$role} )) { # do remove function - $status = $self->exec_method(procname => "remove_user_from_role", + $status = $self->exec_method(procname => "admin__remove_user_from_role", args=>[ $self->{ modifying_user }, $role ] ); } elsif ($self->{incoming_roles}->{$role} and !($active_roles{$role} )) { # do add function - $status = $self->exec_method(procname => "add_user_to_role", + $status = $self->exec_method(procname => "admin__add_user_to_role", args=>[ $self->{ modifying_user }, $role ] ); } } - } sub save_group { @@ -143,8 +142,8 @@ sub save_group { # first we grab all roles - my $roles = $self->exec_method( procname => "all_roles" ); - my $user_roles = $self->exec_method(procname => "get_user_roles", + my $roles = $self->exec_method( procname => "admin__all_roles" ); + my $user_roles = $self->exec_method(procname => "admin__get_user_roles", args=>[ $self->{ group_name } ] ); @@ -170,7 +169,7 @@ sub save_group { # do remove function $status = $self->exec_method( - procname => "remove_group_from_role", + procname => "admin__remove_group_from_role", args=>[ $self->{ modifying_user }, $role ] ); } @@ -178,7 +177,7 @@ sub save_group { # do add function $status = $self->exec_method( - procname => "add_group_to_role", + procname => "admin__add_group_to_role", args=>[ $self->{ modifying_user }, $role ] ); } @@ -190,7 +189,7 @@ sub delete_user { my $self = shift @_; - my $status = shift @{ $self->exec_method(procname=>'delete_user', + my $status = shift @{ $self->exec_method(procname=>'admin__delete_user', args=>[$self->{modifying_user}]) }; @@ -210,7 +209,7 @@ sub delete_group { my $self = shift @_; - my $status = shift @{ $self->exec_method(procname=>'delete_group', + my $status = shift @{ $self->exec_method(procname=>'admin__delete_group', args=>[$self->{groupname}]) } ; @@ -238,4 +237,12 @@ sub get_salutations { return $sth->fetchall_arrayref( {} ); } + +sub get_roles { + + # These are direct, assignable roles. + my $self = shift; + + return $self->exec_method( procname => "admin__all_roles" ); +} 1; diff --git a/LedgerSMB/DBObject/User.pm b/LedgerSMB/DBObject/User.pm index b6d69863..c84c6336 100644 --- a/LedgerSMB/DBObject/User.pm +++ b/LedgerSMB/DBObject/User.pm @@ -11,7 +11,7 @@ sub save { if ( $user->{id} && $self->{is_a_user} ) { # doesn't check for the password - that's done in the sproc. - $self->{id} = shift @{ $self->exec_method(procname=>'admin_save_user', + $self->{id} = shift @{ $self->exec_method(procname=>'admin__save_user', args=>[$user->{id}, $self->{username}, $self->{password}] ) }; if (!$self->{id}) { @@ -29,7 +29,7 @@ sub save { elsif ($self->{is_a_user}) { # No user ID, meaning, creating a new one. - $self->{id} = shift @{ $self->exec_method(procname=>'admin_save_user', + $self->{id} = shift @{ $self->exec_method(procname=>'admin__save_user', args=>[undef, $self->{username}, $self->{password}] ) }; } return 1; @@ -39,7 +39,7 @@ sub get { my $self = shift @_; - my ($user_id, $username) = @{ $self->exec_method(procname=>'admin_get_user', + my ($user_id, $username) = @{ $self->exec_method(procname=>'admin__get_user', args=>[$self->{id}])}; return {id=>$user_id, username=>$username}; @@ -49,7 +49,7 @@ sub remove { my $self = shift; - my $code = $self->exec_method(procname=>"admin_delete_user", args=>[$self->{id}, $self->{username}]); + my $code = $self->exec_method(procname=>"admin__delete_user", args=>[$self->{id}, $self->{username}]); $self->{id} = undef; # never existed.. return $code->[0]; @@ -59,7 +59,7 @@ sub save_prefs { my $self = shift @_; - my $pref_id = $self->exec_method(procname=>"admin_save_preferences", + my $pref_id = $self->exec_method(procname=>"admin__save_preferences", args=>[ 'language', 'stylesheet', @@ -74,7 +74,7 @@ sub get_all_users { my $self = shift @_; - $self->{users} = $self->exec_method( procname=>"user_get_all_users" ); + $self->{users} = $self->exec_method( procname=>"user__get_all_users" ); } 1; diff --git a/UI/Admin/edit_group.html b/UI/Admin/edit_group.html index 94a795c1..53dd4449 100644 --- a/UI/Admin/edit_group.html +++ b/UI/Admin/edit_group.html @@ -2,16 +2,36 @@ <?lsmb IF user.username ?> - <center><b>Edit User</b></center> + <center><b>Edit Group</b></center> <?lsmb ELSE ?> - <center><b>Create User</b></center> + <center><b>Create Group</b></center> <?lsmb ENDIF ?> <form name="submit_user" action="/admin.pl?"> - - + <table> + <tr> + <td>Name:</td> + <td><input type="textarea" name="name" value="<?lsmb user.username?>"/></td> + </tr> + <tr> + <td>Description:</td> + <td><textarea cols="25" rows="4"><? lsmb user.description ?></textarea></td> + </tr> + </table> + <hr/> + <table> + <tr> + <?lsmb FOREACH group IN groups ?> + <?lsmb IF loop.count % 8 == 0?> + </tr> + <tr> + <?lsmb END?> + <td><input type="checkbox" name="<?lsmb loop.index?>" value="1"/><?lsmb group.rolname?></td> + <?lsmb END?> + </tr> + </table> </form>
\ No newline at end of file diff --git a/UI/Admin/edit_user.html b/UI/Admin/edit_user.html index a7c25529..4602f8fa 100644 --- a/UI/Admin/edit_user.html +++ b/UI/Admin/edit_user.html @@ -146,6 +146,20 @@ </table> <table> + + <!-- Groups section --> + <tr> + <?lsmb FOREACH group IN groups ?> + <?lsmb IF loop.count % 8 == 0?> + </tr> + <tr> + <?lsmb END?> + <td><input type="checkbox" name="<?lsmb loop.index?>" value="1"/><?lsmb group.rolname?></td> + <?lsmb END?> + </tr> + </table> + + <table> <tr> <td><button value="new_user">Submit</button></td> <td><button name="method" value="cancel">Cancel</td> diff --git a/scripts/admin.pl b/scripts/admin.pl index 49274abf..a7f8b4a8 100644 --- a/scripts/admin.pl +++ b/scripts/admin.pl @@ -16,12 +16,13 @@ sub new_user { my $sal = $admin->get_salutations(); + my $groups = $admin->get_roles(); + if ($request->type() eq 'POST') { # do the save stuff - my $entity = $admin->save_user(); - + my $entity = $admin->save_new_user(); my $template = LedgerSMB::Template->new( user => $user, template => 'Admin/edit_user', language => $user->{ language }, @@ -30,7 +31,8 @@ sub new_user { $template->render( { user=>$entity, - salutations=> $sal + salutations=>$sal, + roles=>$groups } ); } else { @@ -41,7 +43,8 @@ sub new_user { $template->render( { - salutations=>$sal + salutations=>$sal, + roles=>$groups } ); } @@ -53,14 +56,38 @@ sub edit_user { my ($class, $request) = @_; my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id'); - my $edited_user = $admin->get_entire_user(); - my $all_roles = $admin->role_list(); - - my $template = LedgerSMB::Template->new( user => $user, - template => 'Admin/edit_user', language => $user->{language}, - format => 'HTML', path=>'UI'); + my $all_roles = $admin->get_roles(); + + my $template = LedgerSMB::Template->new( + user => $user, + template => 'Admin/edit_user', + language => $user->{language}, + format => 'HTML', + path=>'UI' + ); - $template->render($edited_user, $all_roles); + if ($request->type() eq 'POST') { + + $admin->save_user(); + $admin->save_roles(); + $template->render( + { + user=>$admin->get_entire_user(), + roles=>$all_roles, + user_roles=>$admin->get_user_roles($request->{username}) + } + ); + } + else { + my $edited_user = $admin->get_entire_user(); + $template->render( + { + user=>$edited_user, + roles=>$all_roles, + user_roles=>$admin->get_user_roles($request->{username}) + } + ); + } } sub edit_group { @@ -69,13 +96,33 @@ sub edit_group { my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all'); my $all_roles = $admin->role_list(); - my $group = $admin->get_group(); - my $template = LedgerSMB::Template->new( user => $user, - template => 'Admin/edit_group', language => $user->{language}, - format => 'HTML', path=>'UI'); + my $template = LedgerSMB::Template->new( + user => $user, + template => 'Admin/edit_group', + language => $user->{language}, + format => 'HTML', + path=>'UI' + ); - $template->render($all_roles); + if ($request->type() eq "POST") { + + my $role = $admin->save_role(); + return $template->render( + { + user=> $request->{role}, + roles=>$all_roles, + user_roles=>$admin->get_user_roles($request->{role}); + } + ); + } + else { + return $template->render( + { + roles=>$all_roles + } + ); + } } sub create_group { @@ -83,13 +130,26 @@ sub create_group { my ($class, $request) = @_; my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all'); - my $all_roles = $admin->role_list(); - - my $template = LedgerSMB::Template->new( user => $user, - template => 'Admin/edit_group', language => $user->{language}, - format => 'HTML', path=>'UI'); + my $all_roles = $admin->get_roles(); + my $template = LedgerSMB::Template->new( + user => $user, + template => 'Admin/edit_group', + language => $user->{language}, + format => 'HTML', + path=>'UI' + ); + if ($request->type() eq "POST") { - $template->render($all_roles); + my $role = $admin->save_role(); + return $template->render( + { + user=> $role, roles=>$all_roles + } + ); + } + else { + return $template->render({roles=>$all_roles}); + } } sub delete_group { diff --git a/sql/modules/admin.sql b/sql/modules/admin.sql index dfd702c8..11c2e5b2 100644 --- a/sql/modules/admin.sql +++ b/sql/modules/admin.sql @@ -7,7 +7,7 @@ create table lsmb_roles ( ); -CREATE OR REPLACE FUNCTION admin_add_user_to_role(in_user TEXT, in_role TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__add_user_to_role(in_user TEXT, in_role TEXT) returns INT AS $$ declare stmt TEXT; @@ -31,13 +31,13 @@ CREATE OR REPLACE FUNCTION admin_add_user_to_role(in_user TEXT, in_role TEXT) re stmt := 'GRANT '|| quote_ident(in_role) ||' to '|| quote_ident(in_user); EXECUTE stmt; - + insert into lsmb_roles (user_id, role) values (in_user, in_role); return 1; END; $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_remove_user_from_role(in_user TEXT, in_role TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__remove_user_from_role(in_user TEXT, in_role TEXT) returns INT AS $$ declare stmt TEXT; @@ -67,7 +67,7 @@ CREATE OR REPLACE FUNCTION admin_remove_user_from_role(in_user TEXT, in_role TEX $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_add_function_to_group(in_func TEXT, in_role TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__add_function_to_group(in_func TEXT, in_role TEXT) returns INT AS $$ declare stmt TEXT; @@ -97,7 +97,7 @@ CREATE OR REPLACE FUNCTION admin_add_function_to_group(in_func TEXT, in_role TEX $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_remove_function_from_group(in_func TEXT, in_role TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__remove_function_from_group(in_func TEXT, in_role TEXT) returns INT AS $$ declare stmt TEXT; @@ -128,7 +128,7 @@ CREATE OR REPLACE FUNCTION admin_remove_function_from_group(in_func TEXT, in_rol $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_add_table_to_group(in_table TEXT, in_role TEXT, in_perm TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__add_table_to_group(in_table TEXT, in_role TEXT, in_perm TEXT) returns INT AS $$ declare stmt TEXT; @@ -165,7 +165,7 @@ CREATE OR REPLACE FUNCTION admin_add_table_to_group(in_table TEXT, in_role TEXT, $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_remove_table_from_group(in_table TEXT, in_role TEXT) returns INT AS $$ +CREATE OR REPLACE FUNCTION admin__remove_table_from_group(in_table TEXT, in_role TEXT) returns INT AS $$ declare stmt TEXT; @@ -198,7 +198,7 @@ CREATE OR REPLACE FUNCTION admin_remove_table_from_group(in_table TEXT, in_role $$ language 'plpgsql'; -create or replace function admin_get_user(in_user TEXT) returns setof users as $$ +create or replace function admin__get_user(in_user TEXT) returns setof users as $$ DECLARE a_user users; @@ -215,7 +215,7 @@ create or replace function admin_get_user(in_user TEXT) returns setof users as $ END; $$ language plpgsql; -create or replace function admin_get_roles_for_user(in_user TEXT) returns setof lsmb_roles as $$ +create or replace function admin__get_roles_for_user(in_user TEXT) returns setof lsmb_roles as $$ declare u_role lsmb_roles; @@ -233,7 +233,7 @@ create or replace function admin_get_roles_for_user(in_user TEXT) returns setof $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_save_user( +CREATE OR REPLACE FUNCTION admin__save_user( in_id int, in_entity_id INT, in_username text, @@ -297,7 +297,7 @@ create view role_view as select * from pg_auth_members m join pg_authid a ON (m.roleid = a.oid); -create or replace function admin_is_group(in_group_name text) returns bool as $$ +create or replace function admin__is_group(in_group_name text) returns bool as $$ DECLARE @@ -317,7 +317,7 @@ create or replace function admin_is_group(in_group_name text) returns bool as $$ $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_create_group(in_group_name TEXT, in_dbname TEXT) RETURNS int as $$ +CREATE OR REPLACE FUNCTION admin__create_group(in_group_name TEXT, in_dbname TEXT) RETURNS int as $$ DECLARE @@ -331,7 +331,7 @@ CREATE OR REPLACE FUNCTION admin_create_group(in_group_name TEXT, in_dbname TEXT $$ language 'plpgsql'; -CREATE OR REPLACE FUNCTION admin_delete_user(in_username TEXT) returns INT as $$ +CREATE OR REPLACE FUNCTION admin__delete_user(in_username TEXT) returns INT as $$ DECLARE stmt text; @@ -361,7 +361,7 @@ comment on function admin_delete_user(text) is $$ Drops the provided user, as well as deletes the entity and user configuration data. $$; -CREATE OR REPLACE FUNCTION admin_delete_group (in_dbname TEXT, in_group_name TEXT) returns bool as $$ +CREATE OR REPLACE FUNCTION admin__delete_group (in_dbname TEXT, in_group_name TEXT) returns bool as $$ DECLARE stmt text; @@ -385,7 +385,7 @@ comment on function admin_delete_group(text,text) IS $$ remove a login-capable user. $$; -CREATE OR REPLACE FUNCTION admin_list_roles(in_username text) +CREATE OR REPLACE FUNCTION admin__list_roles(in_username text) RETURNS SETOF text AS $$ DECLARE out_rolename RECORD; @@ -414,7 +414,7 @@ $$ LANGUAGE PLPGSQL; --$$ language plpgsql; -create or replace function admin_is_user (in_user text) returns bool as $$ +create or replace function admin__is_user (in_user text) returns bool as $$ DECLARE pg_user pg_roles; @@ -431,15 +431,6 @@ create or replace function admin_is_user (in_user text) returns bool as $$ $$ language plpgsql; -create or replace function admin_is_user (in_user text) returns bool as $$ - - BEGIN - - return 'f'::bool; - - END; - -$$ language plpgsql; create or replace view user_listable as select |