3 # Display a form for editing or creating a group
5 require './ldap-useradmin-lib.pl';
7 $ldap = &ldap_connect();
9 $access{'gcreate'} || &error($text{'gedit_ecreate'});
10 &ui_print_header(undef, $text{'gedit_title2'}, "");
13 $rv = $ldap->search(base => $in{'dn'},
15 filter => &group_filter());
16 ($ginfo) = $rv->all_entries;
17 $group = $ginfo->get_value('cn');
18 $gid = $ginfo->get_value('gidNumber');
19 $pass = $ginfo->get_value('userPassword');
20 $desc = $ginfo->get_value('description');
21 @members = $ginfo->get_value('memberUid');
22 foreach $oc ($ginfo->get_value('objectClass')) {
25 %ginfo = &dn_to_hash($ginfo);
26 &can_edit_group(\%ginfo) || &error($text{'gedit_eedit'});
27 &ui_print_header(undef, $text{'gedit_title'}, "");
30 # Build list of all possible users
31 @ulist = &useradmin::list_users();
32 %ulistdone = map { $_->{'user'}, 1 } @ulist;
33 push(@ulist, grep { !$ulistdone{$_->{'user'}} } &list_users());
36 print &ui_form_start("save_group.cgi", "post");
37 print &ui_hidden("new", $in{'new'});
38 print &ui_hidden("dn", $in{'dn'});
39 print &ui_table_start($text{'gedit_details'}, "width=100%", 2, [ "width=30%" ]);
41 # Current DN and classes
43 print &ui_table_row($text{'gedit_dn'},
44 "<tt>$in{'dn'}</tt>");
46 print &ui_table_row($text{'uedit_classes'},
47 join(" , ", map { "<tt>$_</tt>" }
48 $ginfo->get_value('objectClass')));
52 print &ui_table_row($text{'gedit_group'},
53 &ui_textbox("group", $group, 20));
57 # Next GID comes from LDAP only
58 $newgid = $mconfig{'base_gid'};
59 while(&check_gid_used($ldap, $newgid)) {
62 $gidfield = &ui_textbox("gid", $newgid, 10);
65 $gidfield = &ui_textbox("gid", $gid, 10);
67 print &ui_table_row($text{'gedit_gid'},
71 print &ui_table_row($text{'gedit_desc'},
72 &ui_textbox("desc", $desc, 40));
74 # Group password (rarely used, but..)
75 print &ui_table_row($text{'pass'},
76 &ui_radio_table("passmode", $pass eq "" ? 0 : 1,
77 [ [ 0, $text{'none2'} ],
78 [ 1, $text{'encrypted'},
79 &ui_textbox("encpass", $pass, 20) ],
81 &ui_textbox("pass", undef, 15) ] ]));
84 if ($config{'membox'} == 0) {
85 # Nicer left/right chooser
86 print &ui_table_row($text{'gedit_members'},
87 &ui_multi_select("members",
88 [ map { [ $_, $_ ] } @members ],
89 [ map { [ $_->{'user'}, $_->{'user'} ] } @ulist ],
91 $text{'gedit_allu'}, $text{'gedit_selu'}, 150));
95 print &ui_table_row($text{'gedit_members'},
96 &ui_textarea("members", join("\n", @members), 5, 30));
99 print &ui_table_end();
101 # Show extra fields (if any)
102 &extra_fields_input($config{'group_fields'}, $ginfo, \@tds);
104 # Show capabilties section
105 print &ui_table_start($text{'gedit_cap'}, "width=100%", 4, [ "width=30%" ]);
108 print &ui_table_row($text{'gedit_samba'},
109 &ui_yesno_radio("samba", $oclass{$samba_group_class}));
111 print &ui_table_end();
113 # Show section for on-save or on-creation options
115 print &ui_table_start($text{'onsave'}, "width=100%", 2,
119 print &ui_table_row($text{'chgid'},
120 &ui_radio("chgid", 0,
121 [ [ 0, $text{'no'} ],
122 [ 1, $text{'gedit_homedirs'} ],
123 [ 2, $text{'gedit_allfiles'} ] ]));
126 # Update in other modules?
127 print &ui_table_row($text{'gedit_mothers'},
128 &ui_radio("others", $mconfig{'default_other'},
129 [ [ 1, $text{'yes'} ],
130 [ 0, $text{'no'} ] ]));
132 print &ui_table_end();
135 print &ui_table_start($text{'uedit_oncreate'}, "width=100%", 2,
138 # Create in other modules?
139 print &ui_table_row($text{'gedit_cothers'},
140 &ui_radio("others", $mconfig{'default_other'},
141 [ [ 1, $text{'yes'} ],
142 [ 0, $text{'no'} ] ]));
144 print &ui_table_end();
147 # Save/delete/create buttons
149 print &ui_form_end([ [ undef, $text{'save'} ],
150 [ 'raw', $text{'uedit_raw'} ],
151 [ 'delete', $text{'delete'} ],
155 print &ui_form_end([ [ undef, $text{'create'} ] ]);
158 &ui_print_footer("index.cgi?mode=groups", $text{'index_greturn'});