The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! /usr/bin/perl

# $Id: clrnext,v 1.5 1999/01/07 19:21:39 carrigad Exp $

# Copyright (C), 1998, 1999 Enbridge Inc.

# Takes the specified user's card out of Next PIN mode.

use strict;
use SecurID::ACEdb qw(:all);

my $username = shift;

die "usage: $0 login\n" unless defined $username;

die "ApiInit failed: " . Result()
  unless ApiInit();

my $serial= ListSerialByLogin($username);

die "ListSerialByLogin failed: " . Result()
  unless defined $serial;

die "Could not locate token for user $username\n" unless @{$serial};

my $token = $serial->[0];

my $ti = ListTokenInfo($token) 
  or die "ListTokenInfo failed: " . Result();

die "Cannot clear next PIN mode for user $username because token is administratively disabled.\n"
  unless $ti->{enabled};

die "Cannot clear next PIN mode for user $username because token is not in next PIN mode.\n"
  unless $ti->{nextTCodeStatus};

print "Resetting token $token for user $username\n";
die "ResetToken failed: " . Result()
  unless ResetToken($token);

$ti = ListTokenInfo($token) 
  or die "ListTokenInfo failed: " . Result();

Commit();
ApiEnd();

exit(0);