2006-06-16 17:27:54 +00:00
|
|
|
#!/usr/bin/perl -w
|
|
|
|
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
|
|
|
#
|
|
|
|
# The contents of this file are subject to the Mozilla Public
|
|
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
|
|
# except in compliance with the License. You may obtain a copy of
|
|
|
|
# the License at http://www.mozilla.org/MPL/
|
|
|
|
#
|
|
|
|
# Software distributed under the License is distributed on an "AS
|
|
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
# implied. See the License for the specific language governing
|
|
|
|
# rights and limitations under the License.
|
|
|
|
#
|
|
|
|
# The Original Code is Litmus.
|
|
|
|
#
|
|
|
|
# The Initial Developer of the Original Code is Netscape Communications
|
|
|
|
# Corporation. Portions created by Netscape are
|
|
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
# Rights Reserved.
|
|
|
|
#
|
|
|
|
# Contributor(s): Zach Lipton <zach@zachlipton.com>
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
|
|
|
|
use Litmus;
|
|
|
|
use Litmus::Error;
|
|
|
|
use Litmus::DB::Product;
|
|
|
|
use Litmus::DB::TestcaseSubgroup;
|
|
|
|
use Litmus::Auth;
|
|
|
|
use Litmus::Utils;
|
|
|
|
|
|
|
|
use CGI;
|
|
|
|
use Time::Piece::MySQL;
|
|
|
|
|
2006-08-01 20:50:15 +00:00
|
|
|
Litmus->init();
|
2006-06-16 17:27:54 +00:00
|
|
|
my $c = Litmus->cgi();
|
|
|
|
|
|
|
|
# obviously, you need to be an admin to edit users...
|
|
|
|
Litmus::Auth::requireAdmin('edit_users.cgi');
|
|
|
|
|
|
|
|
if ($c->param('search_string')) {
|
|
|
|
# search for users:
|
|
|
|
my $users = Litmus::DB::User->search_FullTextMatches(
|
|
|
|
$c->param('search_string'),
|
2006-06-16 18:36:51 +00:00
|
|
|
$c->param('search_string'),
|
2006-06-16 17:27:54 +00:00
|
|
|
$c->param('search_string'));
|
|
|
|
my $vars = {
|
|
|
|
users => $users,
|
|
|
|
};
|
|
|
|
print $c->header();
|
|
|
|
Litmus->template()->process("admin/edit_users/search_results.html.tmpl", $vars) ||
|
|
|
|
internalError(Litmus->template()->error());
|
|
|
|
} elsif ($c->param('id')) {
|
|
|
|
# lookup a given user
|
|
|
|
my $uid = $c->param('id');
|
|
|
|
my $user = Litmus::DB::User->retrieve($uid);
|
|
|
|
print $c->header();
|
|
|
|
if (! $user) {
|
|
|
|
invalidInputError("Invalid user id: $uid");
|
|
|
|
}
|
|
|
|
my $vars = {
|
|
|
|
user => $user,
|
|
|
|
};
|
|
|
|
Litmus->template()->process("admin/edit_users/edit_user.html.tmpl", $vars) ||
|
|
|
|
internalError(Litmus->template()->error());
|
|
|
|
} elsif ($c->param('user_id')) {
|
|
|
|
# process changes to a user:
|
|
|
|
my $user = Litmus::DB::User->retrieve($c->param('user_id'));
|
|
|
|
print $c->header();
|
|
|
|
if (! $user) {
|
|
|
|
invalidInputError("Invalid user id: " . $c->param('user_id'));
|
|
|
|
}
|
|
|
|
$user->bugzilla_uid($c->param('bugzilla_uid'));
|
2006-06-16 18:54:37 +00:00
|
|
|
$user->email($c->param('edit_email'));
|
2006-06-16 17:27:54 +00:00
|
|
|
|
2006-06-16 18:54:37 +00:00
|
|
|
if ($c->param('edit_password') ne 'unchanged') {
|
2006-06-16 17:27:54 +00:00
|
|
|
# they changed the password, so let the auth folks know:
|
2006-06-16 18:54:37 +00:00
|
|
|
Litmus::Auth::changePassword($user, $c->param('edit_password'));
|
2006-06-16 17:27:54 +00:00
|
|
|
}
|
|
|
|
$user->realname($c->param('realname'));
|
|
|
|
$user->irc_nickname($c->param('irc_nickname'));
|
|
|
|
if ($c->param('enabled')) {
|
|
|
|
$user->enabled(1);
|
|
|
|
}
|
|
|
|
if ($c->param('is_admin')) {
|
|
|
|
$user->is_admin(1);
|
|
|
|
}
|
|
|
|
$user->authtoken($c->param('authtoken'));
|
|
|
|
$user->update();
|
|
|
|
my $vars = {
|
|
|
|
user => $user,
|
|
|
|
};
|
|
|
|
Litmus->template()->process("admin/edit_users/user_edited.html.tmpl", $vars) ||
|
|
|
|
internalError(Litmus->template()->error());
|
|
|
|
} else {
|
|
|
|
# we're here for the first time, so display the search form
|
|
|
|
my $vars = {
|
|
|
|
};
|
|
|
|
print $c->header();
|
|
|
|
Litmus->template()->process("admin/edit_users/search_users.html.tmpl", $vars) ||
|
|
|
|
internalError(Litmus->template()->error());
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|