Project

General

Profile

Download (4.4 KB) Statistics
| Branch: | Tag: | Revision:
1 6b07c15a Matthew Grooms
<?php
2
/* $Id$ */
3
/*
4
	system_groupmanager_addprivs.php
5
6 ce77a9c4 Phil Davis
	Copyright (C) 2013-2015 Electric Sheep Fencing, LP
7 6b07c15a Matthew Grooms
	Copyright (C) 2006 Daniel S. Haischt.
8
	All rights reserved.
9
10
	Redistribution and use in source and binary forms, with or without
11
	modification, are permitted provided that the following conditions are met:
12
13
	1. Redistributions of source code must retain the above copyright notice,
14
	   this list of conditions and the following disclaimer.
15
16
	2. Redistributions in binary form must reproduce the above copyright
17
	   notice, this list of conditions and the following disclaimer in the
18
	   documentation and/or other materials provided with the distribution.
19
20
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
24
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
	POSSIBILITY OF SUCH DAMAGE.
30
*/
31 1d333258 Scott Ullrich
/*
32
	pfSense_MODULE:	auth
33
*/
34 6b07c15a Matthew Grooms
35
##|+PRIV
36
##|*IDENT=page-system-groupmanager-addprivs
37
##|*NAME=System: Group Manager: Add Privileges page
38
##|*DESCR=Allow access to the 'System: Group Manager: Add Privileges' page.
39
##|*MATCH=system_groupmanager_addprivs.php*
40
##|-PRIV
41
42 4504a769 Ermal Lu?i
function cpusercmp($a, $b) {
43
	return strcasecmp($a['name'], $b['name']);
44
}
45
46 0d64af59 Ermal Lu?i
function admin_groups_sort() {
47 64600f94 Sjon Hortensius
	global $config;
48 0d64af59 Ermal Lu?i
49 64600f94 Sjon Hortensius
	if (!is_array($config['system']['group']))
50
			return;
51 0d64af59 Ermal Lu?i
52 64600f94 Sjon Hortensius
	usort($config['system']['group'], "cpusercmp");
53 0d64af59 Ermal Lu?i
}
54 6b07c15a Matthew Grooms
55
require("guiconfig.inc");
56
57 c3c68a70 Vinicius Coque
$pgtitle = array(gettext("System"),gettext("Group manager"),gettext("Add privileges"));
58 6b07c15a Matthew Grooms
59 e41ec584 Renato Botelho
if (is_numericint($_GET['groupid']))
60
	$groupid = $_GET['groupid'];
61 64600f94 Sjon Hortensius
elseif (isset($_POST['groupid']) && is_numericint($_POST['groupid']))
62 6b07c15a Matthew Grooms
	$groupid = $_POST['groupid'];
63
64
$a_group = & $config['system']['group'][$groupid];
65
66
if (!is_array($a_group)) {
67
	pfSenseHeader("system_groupmanager.php?id={$groupid}");
68
	exit;
69
}
70
71
if (!is_array($a_group['priv']))
72
	$a_group['priv'] = array();
73
74
if ($_POST) {
75
76
	unset($input_errors);
77
	$pconfig = $_POST;
78
79
	/* input validation */
80
	$reqdfields = explode(" ", "sysprivs");
81 e30050b6 Phil Davis
	$reqdfieldsn = array(gettext("Selected privileges"));
82 6b07c15a Matthew Grooms
83 1e9b4611 Renato Botelho
	do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
84 6b07c15a Matthew Grooms
85
	/* if this is an AJAX caller then handle via JSON */
86
	if(isAjax() && is_array($input_errors)) {
87
		input_errors2Ajax($input_errors);
88
		exit;
89
	}
90
91
	if (!$input_errors) {
92
93
		if (!is_array($pconfig['sysprivs']))
94
			$pconfig['sysprivs'] = array();
95
96
		if (!count($a_group['priv']))
97
			$a_group['priv'] = $pconfig['sysprivs'];
98
		else
99
			$a_group['priv'] = array_merge($a_group['priv'], $pconfig['sysprivs']);
100
101 2ee08031 Erik Fonnesbeck
		if (is_array($a_group['member'])) {
102
			foreach ($a_group['member'] as $uid) {
103
				$user = getUserEntryByUID($uid);
104
				if ($user)
105
					local_user_set($user);
106
			}
107 6b07c15a Matthew Grooms
		}
108
109 0d64af59 Ermal Lu?i
		admin_groups_sort();
110
111 6b07c15a Matthew Grooms
		$retval = write_config();
112
		$savemsg = get_std_save_message($retval);
113
114 64600f94 Sjon Hortensius
		pfSenseHeader("system_groupmanager.php?act=edit&groupid={$groupid}");
115 6b07c15a Matthew Grooms
		exit;
116
	}
117
}
118
119
/* if ajax is calling, give them an update message */
120
if(isAjax())
121
	print_info_box_np($savemsg);
122
123
include("head.inc");
124
125 64600f94 Sjon Hortensius
if ($input_errors)
126
	print_input_errors($input_errors);
127
if ($savemsg)
128
	print_info_box($savemsg);
129
130
$tab_array = array();
131
$tab_array[] = array(gettext("Users"), false, "system_usermanager.php");
132
$tab_array[] = array(gettext("Groups"), true, "system_groupmanager.php");
133
$tab_array[] = array(gettext("Settings"), false, "system_usermanager_settings.php");
134
$tab_array[] = array(gettext("Servers"), false, "system_authservers.php");
135
display_top_tabs($tab_array);
136
137
require('classes/Form.class.php');
138
$form = new Form;
139
if (isset($groupid))
140
{
141
	$form->addGlobal(new Form_Input(
142
		'groupid',
143
		null,
144
		'hidden',
145
		$groupid
146
	));
147
}
148 6b07c15a Matthew Grooms
149 64600f94 Sjon Hortensius
$section = new Form_Section('Add privileges for '. $a_group['name']);
150 6b07c15a Matthew Grooms
151 64600f94 Sjon Hortensius
$priv_list = array_map(function($p){ return $p['name']; }, $priv_list);
152
asort($priv_list);
153 6b07c15a Matthew Grooms
154 64600f94 Sjon Hortensius
$section->addInput(new Form_Select(
155
	'sysprivs',
156
	'Assigned privileges',
157
	$a_group['priv'],
158
	$priv_list,
159
	true
160 1192840b Sjon Hortensius
))->setHelp('Hold down CTRL (pc)/COMMAND (mac) key to select');
161 6b07c15a Matthew Grooms
162 64600f94 Sjon Hortensius
$form->add($section);
163 6b07c15a Matthew Grooms
164 64600f94 Sjon Hortensius
print $form;
165 6b07c15a Matthew Grooms
166 64600f94 Sjon Hortensius
include('foot.inc');