-
-
Notifications
You must be signed in to change notification settings - Fork 168
Expand file tree
/
Copy pathnewpassword
More file actions
executable file
·86 lines (57 loc) · 1.55 KB
/
Copy pathnewpassword
File metadata and controls
executable file
·86 lines (57 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env perl
=head1 NAME
newpassword - change a users password
=head1 SYNOPSIS
newpassword COURSEID USERID NEWPASSWORD
=head1 DESCRIPTION
Change the password for a user.
=head1 ARGUMENTS
=over
=item I<COURSEID>
The name of the course.
=item I<USERID>
The login name of the user you will change the password for.
=item I<NEWPASSWORD>
The new password.
=back
=cut
use strict;
use warnings;
BEGIN {
use Mojo::File qw(curfile);
use Env qw(WEBWORK_ROOT);
$WEBWORK_ROOT = curfile->dirname->dirname;
}
use lib "$ENV{WEBWORK_ROOT}/lib";
use WeBWorK::CourseEnvironment;
use WeBWorK::DB;
use WeBWorK::Utils qw(cryptPassword);
if ((scalar(@ARGV) != 3)) {
print "\nSyntax is: newpassword CourseID User NewPassword";
print "\n (e.g. newpassword MAT_123 jjones abracadabra\n\n";
exit();
}
##### get command-line options #####
my $courseID = shift;
my $user = shift;
my $newP = shift;
##### main function #####
sub dopasswd {
my ($db, $user, $newpass) = @_;
my $passwordRecord = eval { $db->getPassword($user) };
die "Can't get password for user |$user| $@" if $@ or not defined($passwordRecord);
my $cryptedPassword = cryptPassword($newpass);
$passwordRecord->password($cryptedPassword);
eval { $db->putPassword($passwordRecord) };
if ($@) {
die "Errors $@ ";
}
}
# bring up a minimal course environment
my $ce = WeBWorK::CourseEnvironment->new({
webwork_dir => $ENV{WEBWORK_ROOT},
courseName => $courseID
});
my $db = WeBWorK::DB->new($ce);
dopasswd($db, $user, $newP);
print "Changed password for $user in $courseID\n";