#!/usr/bin/perl -w

# Try Again Registration Script
# Project : reg
#

use lib qw(/usr/perl5/site_perl/5.6.1/sun4-solaris-64int);
 
use DBI;
use strict;

my $name = getlogin();
my $password  = "na";

###################################################
# Update the strings below with your database info
my $db_handle = DBI->connect("dbi:mysql:database=trydb;host=holly.cs.rit.edu;user=root;password=dragonsoft")
    or die "Couldn't connect to database: $DBI::errstr\n";
my $sql_getuser = $db_handle->prepare("SELECT * FROM user")
    or die "Couldn't prepare query sql_getuser: $DBI::errstr\n";
# end update
###################################################

sub selectPassword() {
	my $password = "";
	my $chkPass;
		
		my $trk_loaded = 0;
		eval {
			require Term::ReadKey;
			import Term::ReadKey;
			$trk_loaded = 1;
		};
		
		print "Select a password:\n";
		ReadMode('noecho') if $trk_loaded; # input echo off
		chomp($password = $trk_loaded ? ReadLine(0) : <STDIN>);
		print "Enter password again:\n";
		chomp($chkPass = $trk_loaded ? ReadLine(0) : <STDIN>);
		ReadMode('restore') if $trk_loaded; # input echo on
		print "\n";
		
		if($password ne $chkPass) {
			print "The passwords you entered did not match, please try again.\n";
			exit;
		} elsif(length($password) lt 6) {
			print "The password must be at least 6 characters long, please try again.\n";
			exit;
		}

	
	return $password;
}


$sql_getuser->execute()
    or die "Couldn't execute query sql_getuser: $DBI::errstr\n";

print "Try Again Registration Script\n";
print "username: $name.\n";

if ($sql_getuser->rows == 0) {
	# user does not exist
	print "\nRegistering new user...\n";
	$password = selectPassword();
	
	
my $sql_createuser = $db_handle->prepare("INSERT user (username, password) VALUES('$name', '$password')")
    or die "Couldn't prepare query sql_createuser: $DBI::errstr\n";
	
	$sql_createuser->execute()
		or die "Couldn't execute query sql_createuser: $DBI::errstr\n";
	$sql_createuser->finish();
	
	$sql_getuser->execute();
	if($sql_getuser->rows == 0) {
		print "Failed to create user, please try again.\n";
	} else {
		print "user ($name) sucessfully created.\n";	
	}
} else {
	# user exists
	print "\nuser account ($name) has already been registered.\n";
	print "\tWould you like to change your password? ([yes] or no)\n";
	
	my $input = <>; chomp($input);
		
	if($input eq "yes" || $input eq "y" || $input eq "") {
		$password = selectPassword();
		
my $sql_updatepassword = $db_handle->prepare("UPDATE user SET password='$password' WHERE username='$name'")
    or die "Couldn't prepare query sql_updatepassword: $DBI::errstr\n";
		
		$sql_updatepassword->execute()
			or die "Couldn't execute query $sql_updatepassword: $DBI::errstr\n";
		$sql_updatepassword->finish();
	} else {
		print "Goodbye\n";
	} 

}


$sql_getuser->finish();

$db_handle->disconnect();


