\ No newline at end of file
diff --git a/Header.php b/Header.php
index 4f8118f..6899665 100644
--- a/Header.php
+++ b/Header.php
@@ -1,57 +1,41 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
@@ -126,7 +112,7 @@ else
}
h1,h2,h3,h4{color:#03407B;}
a {
- color: #03407B;
+ color: #03407B;
}
.break-word {
@@ -152,33 +138,30 @@ else
.ui-button{ background: #03488B; color:white }
-
-
-
-
+ window.location.href="\Script.php\?action=statuschange&uid="+id+"&status="+status;
+ }
+
diff --git a/NoDirectPhpAcess.php b/NoDirectPhpAcess.php
new file mode 100644
index 0000000..d5e6143
--- /dev/null
+++ b/NoDirectPhpAcess.php
@@ -0,0 +1,7 @@
+
diff --git a/Quick_Start.txt b/Quick_Start.txt
index 7eaa5a9..e6df0fe 100644
--- a/Quick_Start.txt
+++ b/Quick_Start.txt
@@ -3,7 +3,7 @@
-* Use Admin User t Create Lecturer Accounts
+* Use Admin User to Create Lecturer Accounts
user : Admin
Password : admin@123
@@ -13,19 +13,19 @@
* Login to Lecturer Account
-* Create Course ( You can Define if students require approvel to join or Not )
+* Create Course ( You can define whether or not students require approval to join the course )
* As Student
You can Sign up with your Student ID
- The Provide Email and Password
+ Then Provide your Email and Password
* Browse Courses by Deartment
- Or Search by Course Course
- Join Course
- - You can see list of your course in Course Home page
+ - You can see the list of your courses in Course Home page
*
diff --git a/README.md b/README.md
index a3bc890..111cc32 100644
--- a/README.md
+++ b/README.md
@@ -2,26 +2,164 @@
LRR (Lab Report Repository) is an online software application for posting assignments, submitting assignments and marking (re-marking) assignments.
-This software was originally developed by by Mahomed Nor, a postgraduate student in the Department of Computer Science at the Zhejiang Normal University,
-while he was taking his graduate course **Advanced Software Engineering** (http://lanlab.org/course/2018f/se/homepage.html).
+This software was originally developed by by Mahomed Nor, a graduate student in the Department of Computer Science at the Zhejiang Normal University,
+while he was taking a graduate course called **Advanced Software Engineering** (http://lanlab.org/course/2018f/se/homepage.html).
+
+The LRR's project home page is at http://118.25.96.118/nor/homepage/index.html.
# Mission
-Our mission is to make the learning experience great for tens of hundreds of students in the department of computer science.
+Our mission is to make the experience of submitting assignments great for tens of hundreds of students in the department of computer science at the Zhejiang Normal University (Jinhua City, Zhejiang Province).
+
+
+
+# Installation Instructions
+
+
+## Hui's steps
+
+I spent about two hours on installing LRR to a bare, remote Ubuntu server (Ubuntu 20.04 LTS).
+
+LRR needs Apache and MySQL to run. I followed [How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04) to set up these server applications.
+
+LRR uses a database called `lrr`. I need to export existing `lrr` to a plain text file (including many sql commands) and import that text file to the newly created `lrr` database on the new server.
+The command for exporting the database is `mysqldump -u mnc -p lrr > lrr_database_dump.txt`.
+The command for importing is `mysql -u mnc -p lrr < lrr_database_dump.txt`. Read [How to Import and Export MySQL Databases in Linux](https://phoenixnap.com/kb/import-and-export-mysql-database) for more detail.
+
+LRR also needs to store assignment submissions. We store them in a folder called `../../lrr_submission`. Note that `lrr_submission` is two levels above the project folder (where many PHP files reside). I copied this folder from the existing one. I think it is also OK if you create an empty folder.
+We need to set a proper owner and accessibility for `lrr_submission` using the following two commands:
+`sudo chown -R www-data:www-data lrr_submission` and `sudo chmod -R g+rw lrr_submission`. Also, remember to change the user name and password in `lrr_submission/KeepItSafe.txt` for the database connection.
+
+The above steps are preparation work. Now we could clone the LRR's repository to `/var/www/html/`.
+Rename LRR to lrr. Change the owner of lrr: `sudo chown -R $USER:$USER /var/www/lrr`. Edit apache configure file: `sudo nano /etc/apache2/sites-available/lrr.conf`.
+
+
+
+ ServerName lrr
+ ServerAlias www.lrr.com
+ ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html/lrr
+ ErrorLog ${APACHE_LOG_DIR}/error.log
+ CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+
+Enable the site lrr: `sudo a2ensite lrr`. Restart the apache server: `sudo systemctl reload apache2`.
+Visit the LRR application by entering this URL in a web browser: http://121.4.94.30/.
+
+
+## Enock's steps
+
+Enock has made a tutorial about how he deployed LRR to a remote server (http://lanlab.org/course/2021s/spm/PuTTY-Server.txt).
+
# Current Status
-This software has been actively used by students who took or are taking courses taught by Hui. There are more than 200 student accounts created since its first launch.
+This software has been actively used by students who took or are
+taking courses (Introduction to Software Engineering and Software
+Project Management) taught by Hui.
+
+There are more than 200 student accounts created since its first
+launch in 2018.
A running instance of this software is at http://118.25.96.118/nor/
-There are about 40 bugs (most being CRITICAL) that remain unresolved before LRR can hit its beta release. See the section *The Bug Tracker* for more details.
+There are about 40 bugs (most being CRITICAL) that remain unresolved
+before LRR can hit its beta release. See the section *The Bug
+Tracker* for more detail. Currently, there are a few groups (formed
+by students who are taking Software Project Management) working on
+these bugs.
-Currently, there are a few groups (formed by students who are taking Software Project Management) working on these bugs.
+
+
+
+# The Bug Tracker
+
+We use Bugzilla to track LRR's bugs and feature requests.
+
+Most bugs of this software are recorded on the bug tracker for LRR:
+http://118.25.96.118/bugzilla/describecomponents.cgi?product=Lab%20Report%20Repository%20%28nor%20houzi%29
+
+
+
+# TODO
+
+- *Receiving email for password resetting*. Password resetting link is not always sent successfully.
+
+- *How assignements should be stored?* Creating sub-directories on all student submissions course-code/semester/section-number. (/student-number/course-code/semester/section-number/assignement-title/submission.txt)
+
+- [SOLVED] Editing the assignment title after uploading a new assignment (instructor).
+
+- [SOLVED] A new user could not login immediately after sign up.
+
+- A more complete list of TODO's is at http://lanlab.org/course/2020s/spm/decide-areas-for-improvement-review.html
+
+
+# How to Contribute
+
+We welcome your participation in this project.
+
+Your participation does not have to be in the form of contributing code. You could help us on
+ideas, suggestions, documentation, etc.
+
+
+You need to be an invited member of *Lan Laboratory* before you can
+push your feature branch or bugfix branch to the central reops at
+https://github.com/lanlab-org
+
+Send Hui (lanhui at zjnu.edu.cn) an email message including your
+GitHub account name so that he could invite you to be a member of *Lan
+Laboratory*.
+
+As of March 31 2020, there are 30 members in *Lan Laboratory* (https://github.com/orgs/lanlab-org/people).
+
+You will use the feature-branching workflow (see below) when
+interacting with the central repo. The main point of this workflow is
+that you work on a branch on your local drive, push that branch to the
+central repo, and create a Pull Request (i.e., Pull Me Request) at
+GitHub for other people to review your changes. When everything is
+OK, then *someone* could merge your changes to the master branch in the
+central repo.
+
+I believe that *code review* at the Pull Request stage is important
+for both improving code quality and improving team quality.
+
+
+
+## The Feature-branching Workflow
+
+We will use the feature-branching workflow for collaboration. The
+idea is that you make your own branch, work on it, and push this branch to
+the central repo for review.
+
+Check the section **The feature-branching workflow** in the following link for more detail:
+
+https://github.com/spm2020spring/TeamCollaborationTutorial/blob/master/team.rst
+
+
+
+## Communications Method
+
+For real-time communication, check our IRC channel `#lrr` at irc.freenode.org. Check this link http://lanlab.org/course/2020s/spm/irc-instruction.txt
+for how to use IRC.
+
+To submit bug reports or improvement ideas, please ask Hui [lanhui at zjnu.edu.cn] to open a Bugzilla account for you.
+
+
+
+
+
+## Frequently Asked Questions
+
+
+1. Q: The web application's front page does not show properly, i.e., elements are not well aligned.
+ A: You missed two folders `css` and `font-awesome`. These folders include third-party js or css files and therefore are not included.
+
+1. Q: What if I do not have any information about the `lrr` database?
+ A: You could use `lrr(1).sql` or `lrr_database.sql`. It seems `lrr(1).sql` is more complete.
@@ -30,60 +168,53 @@ Currently, there are a few groups (formed by students who are taking Software Pr
The original GitHub Repo is at https://github.com/EngMohamedNor/LabReportRepo
-
-
-# The Bug Tracker
-
-Most bugs of this software have been reported on the LRR bug tracker: http://118.25.96.118/bugzilla/describecomponents.cgi?product=Lab%20Report%20Repository%20%28nor%20houzi%29
-
-
-
-# TODO
-
-- [SOLVED] A new user could not login immediately after sign up.
-
-- *Receiving email for password resetting*. Password resetting link is not always sent successfully.
-
-- *How assignements should be stored?* Creating sub-directories on all student submissions course-code/semester/section-number. (/student-number/course-code/semester/section-number/assignement-title/submission.txt)
-
-- *Feature request*. Editing the assignment title after uploading a new assignment (instructor).
-
-
-We welcome your participation in this project. Your participation does not have to be coding. You could help us on ideas, suggestions, information, etc.
-
-
-*Last modified on 22 March 2020*
-
-
-
-# How to Contribute
-
-You need to be an invited member of *Lan Laboratory* before you can push your feature branch or bugfix branch to the central reops at https://github.com/lanlab-org
-
-Send Hui (lanhui at zjnu.edu.cn) an email message including your GitHub account name so that he could invite you to be a member of *Lan Laboratory*.
-
-Currently, there are 9 members in *Lan Laboratory* (https://github.com/orgs/lanlab-org/people).
-
-You will use the feature-branching workflow (see below) when
-interacting with the central repo. The main point of this workflow is
-that you work on a branch on your local drive, push that branch to the
-central repo, and create a Pull Request (i.e., Pull Me Request) at
-GitHub for other people to review your changes. When everything is
-OK, then you could merge your changes to the master branch in the
-central repo.
-
-I believe that *code review* at the Pull Request stage is a very important activity for effectively improving both code quality and team quality.
-
-
-## The feature-branching workflow
-
-Check the section **The feature-branching workflow** in the following link:
-
-https://github.com/spm2020spring/TeamCollaborationTutorial/blob/master/team.rst
-
-
-
# Contributor List
-*Please put your name and student number below*.
+*Important contributors are highlighted.*
+
+GitHub Account - Full Name - Student number
+
+CODEwithZAKI - Omar Mohamud Mohamed - 202025800041
+
+BloudYoussef - Khayat Youssef - 202025800042
+
+TanakaMichelle - Tanaka Michelle Sandati - 201732120134
+
+WhyteAsamoah - Yeboah Martha Asamoah - 201732120135
+
+xiaoyusoil - ZhengXiaoyu - 201732120110
+
+Benny123-cell - ZhangBin - 201732120127
+
+421281726 - LiJiaxing - 201732120118
+
+zhenghongyu-david - ZhengHongyu - 201732120128
+
+wkytz - YeHantao - 201732120125
+
+zego000 - GaoZeng - 201732120117
+
+Richard1427 - XieJiacong - 201732120123
+
+yutengYing - YingYuteng - 201732120126
+
+Samrusike - Samantha Rusike - 201632120140
+
+*enockkays*
+
+*Teecloudy* - Ashly Tafadzwa Dhani - 201632120150
+
+GuedaliaBonheurSPM - Guedalia Youma - 201925800221
+
+ACorneille - Alimasi Corneille - 201925800168
+
+Tabithakipanga - Kipanga Dorcas - 201925800170
+
+Mary-AK - Mary Akussah Doe - 201925800173
+
+pkkumson - Kumson Princewill Kum - 201925800166
+
+Twizere - Twizere Pacifique - 201925800174
+
+Nicole-Rutagengwa - Nicole Rutagengwa - 201925800169
diff --git a/Readme.txt b/Readme.txt
index 8ed0306..b28306e 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,5 +1,5 @@
-* Student Regisreation Process is now simplyfied, Student Passport/ID checking process skipped as there is no where find that information currenly. The system now checks Student Passport / National ID from users tables insead of verifying from school databse.
+* Student Registration Process is now simplified, Student Passport/ID checking process skipped as there is nowhere find that information currently. The system now checks Student Passport / National ID from usersโ tables instead of verifying from school database.
-*
\ No newline at end of file
+*
diff --git a/Reset_password.php b/Reset_password.php
index 95e045c..7af1740 100644
--- a/Reset_password.php
+++ b/Reset_password.php
@@ -46,4 +46,4 @@ $email=$_GET['email'];
-
\ No newline at end of file
+
diff --git a/Script.php b/Script.php
index 968faae..d1921c7 100644
--- a/Script.php
+++ b/Script.php
@@ -1,206 +1,211 @@
+
+
. Thanks.";
header("Location: index.php");
return;
}
-
-
- $result98 = mysqli_query($con,
- "SELECT * FROM `users_table` WHERE Student_ID='$student_id'");
-
-
- if(mysqli_num_rows($result98)==0)
+ $result98 = mysqli_query($con, "SELECT * FROM `users_table` WHERE Student_ID='$student_id'");
+ if(mysqli_num_rows($result98) == 0)
{
- $_SESSION['user_passport']=$passport;
- $_SESSION['user_student_id']=$student_id;
- header("Location: signup.php");
- return;
-
+ $_SESSION['user_student_id'] = $student_id;
+ header("Location: signup.php");
+ return;
}
else
{
- $_SESSION["info_signup1"]="Student ID already Used ! Please contact student Management Office if you could not login to your account.";
+ $_SESSION["info_signup1"] = "This Student ID is already in use! Please contact Student Management Office for help.";
header("Location: index.php");
return;
}
-
- }
+}
+
+
+// ############################### CREATE STUDENT USER ##################################
+if (!empty($_POST["frm_signup_2"])) {
+ $fullname = mysqli_real_escape_string($con, $_POST["fullname"]);
+ $student_id = mysqli_real_escape_string ($con, $_POST["user_student_id"]);
+ $email = mysqli_real_escape_string($con, $_POST["email"]);
+ $password = mysqli_real_escape_string($con, $_POST["password"]);
+ $confirmpassword = mysqli_real_escape_string($con, $_POST["confirmpassword"]);
+ $_SESSION['user_fullname'] = $fullname;
+ $_SESSION['user_type'] = "Student";
+ $_SESSION['user_email'] = $email;
-
-
-
-
-
-
-
-
-
-
-
-
-
- // ############################### CREATE STUDENT USER ##################################
- if (!empty($_POST["frm_signup_2"])) {
- $email=mysqli_real_escape_string($con,$_POST["email"]);
- $password=mysqli_real_escape_string($con,$_POST["password"]);
- $confirmpassword=mysqli_real_escape_string($con,$_POST["confirmpassword"]);
- $fullname=mysqli_real_escape_string($con,$_POST["fullname"]);
- $student_id=$_SESSION['user_student_id'];
- $passport= $_SESSION['user_passport'];
- $_SESSION['user_fullname']=$fullname;
- $_SESSION['user_type']="Student";
- $_SESSION['user_email']=$email;
// check confirmed password
if ( strcasecmp( $password, $confirmpassword ) != 0 ){
- $_SESSION['info_signup2']="Incorrect Password confirmation";
- header("Location: signup.php");
- return;
+ $_SESSION['info_signup2'] = "Password confirmation failed.";
+ $_SESSION['user_fullname'] = null; // such that Header.php do not show the header information.
+ header("Location: signup.php");
+ return;
}
- // $containsLetter = preg_match('/[a-zA-Z]/', $password);
- // $containsDigit = preg_match('/\d/', $password);
- // $containsSpecial = preg_match('/[^a-zA-Z\d]/', $password);
- $upperLetter = preg_match('@[A-Z]@', $password);
- $smallLetter = preg_match('@[a-z]@', $password);
- $containsDigit = preg_match('@[0-9]@', $password);
- $containsSpecial = preg_match('@[^\w]@', $password);
- $containsAll = $upperLetter && $smallLetter && $containsDigit && $containsSpecial;
- // check for strong password
- if($containsAll < 8)
- {
- $_SESSION['info_signup2']="Password should contain Letters , Numbers and sepcial characters";
- header("Location: signup.php");
- return;
+
+ // validate email
+ if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $_SESSION['info_signup2'] = "Invalid email address.";
+ header("Location: signup.php");
+ return;
}
- // check if email is taked
- $result = mysqli_query($con,
- "SELECT * FROM Users_Table WHERE email='$email'");
- if(mysqli_num_rows($result)!=0)
+
+ $upperLetter = preg_match('@[A-Z]@', $password);
+ $smallLetter = preg_match('@[a-z]@', $password);
+ $containsDigit = preg_match('@[0-9]@', $password);
+ $containsSpecial = preg_match('@[^\w]@', $password);
+ $containsAll = $upperLetter && $smallLetter && $containsDigit && $containsSpecial;
+
+ // check for strong password
+ if(! $containsAll) {
+ $_SESSION['info_signup2'] = "Password must have at least characters that include lowercase letters, uppercase letters, numbers and sepcial characters (e.g., !?.,*^).";
+ header("Location: signup.php");
+ return;
+ }
+
+ // check if email is taken
+ $result = mysqli_query($con, "SELECT * FROM users_table WHERE email='$email'");
+ if(mysqli_num_rows($result) != 0)
{
- $_SESSION["info_signup2"]="Email adress : ".$email." is already used.";
+ $_SESSION["info_signup2"]="Email adress ".$email." is already in use.";
+ $_SESSION['user_fullname'] = null;
header("Location: signup.php");
return;
}
- //applying password_hash()
+
+ // apply password_hash()
$password_hash = password_hash($password, PASSWORD_DEFAULT);
- $sql= "INSERT INTO `users_table`(`Email`, `Password`, `Full_Name`, `UserType`, `Student_ID`, `Passport_Number`) VALUES "
- . "('$email','$password_hash','$fullname','Student','$student_id','$passport')";
+ $sql= "INSERT INTO `users_table`(`Email`, `Password`, `Full_Name`, `UserType`, `Student_ID`) VALUES "
+ . "('$email','$password_hash','$fullname','Student','$student_id')";
- if ($con->query($sql) === TRUE) {
- header("Location: Courses.php");
-
-} else {
- echo "Error: " . $sql . " " . $con->error;
+ if ($con->query($sql) === TRUE) {
+ header("Location: Courses.php");
+ } else {
+ echo "Something really bad (SQL insertion error) happened during sign up.";
+ }
}
- }
-
+
// ################################ LOGIN #####################################
if (!empty($_POST["frm_login"])) {
- $user=mysqli_real_escape_string($con,$_POST["user"]);
- $password=mysqli_real_escape_string($con,$_POST["password"]);
- // $hashed_password=hash('sha512', $password); Not necessary in the login
- $result = mysqli_query($con, "SELECT * FROM users_table WHERE (Email='$user')");
-if(mysqli_num_rows($result)==0)
- {
- $_SESSION["info_login"]="Inavlid login Information.";
-
-echo $_SESSION["info_login"];
-
-header("Location: index.php");
- }
- else
- {
- while($row = mysqli_fetch_assoc($result)) {
- // verify the hashed password and unhashed password
- $sha512pass = hash('sha512', $password); // for backward compatibility. Old passwords were hashed using SHA512 algorithm.
- if(password_verify($password, $row["Password"]) or $sha512pass == $row["HashPassword"] or $password == $row["Password"]){
- $_SESSION['user_id']=$row['User_ID'];
- $_SESSION['user_email']=$row['Email'];
- $_SESSION['user_student_id']=$row['Student_ID'];
- $_SESSION['user_type']=$row['UserType'];
- $_SESSION['user_fullname']=$row['Full_Name'];
-
- if( $_SESSION['user_type']=="Student")
- {
- header("Location: Courses.php");
- }
-
- if( $_SESSION['user_type']=="Lecturer")
- {
- header("Location: Courses.php");
- }
-
- if( $_SESSION['user_type']=="TA")
- {
- header("Location: Courses.php");
- }
-
- if( $_SESSION['user_type']=="Admin")
- {
- header("Location: Admin.php");
- }
- // report wrong pass if not correct
- }else{
- $_SESSION["wrong_pass"]="Wrong Password.";
-
- echo $_SESSION["wrong_pass"];
-
- header("Location: index.php");
- }
-
- }
- }
+ $user = mysqli_real_escape_string($con, $_POST["user"]); // user could be a 12-digit student number or an email address
+ $is_student_number = 0;
+
+ // Validate student number
+ if ( is_valid_student_number($user) ) {
+ $is_student_number = 1;
+ }
+
+ // Validate email address if what provided is not a student number
+ if (! $is_student_number && !filter_var($user, FILTER_VALIDATE_EMAIL)) {
+ $_SESSION["info_login"] = "Invalid email address: " . "$user";
+ header("Location: index.php");
+ return;
+ }
+
+ $password = mysqli_real_escape_string($con, $_POST["password"]);
+ $result = mysqli_query($con, "SELECT * FROM users_table WHERE (Student_ID='$user') OR (Email='$user')");
+ if(mysqli_num_rows($result) == 0)
+ {
+ $_SESSION["info_login"] = "Inavlid user name information.";
+ echo $_SESSION["info_login"];
+ header("Location: index.php");
+ }
+ else
+ {
+ while($row = mysqli_fetch_assoc($result)) {
+ // verify the hashed password and unhashed password
+ $sha512pass = hash('sha512', $password); // for backward compatibility. Old passwords were hashed using SHA512 algorithm.
+ if(password_verify($password, $row["Password"]) or $sha512pass == $row["HashPassword"]) {
+
+ $_SESSION['user_id'] = $row['User_ID'];
+ $_SESSION['user_email'] = $row['Email'];
+ $_SESSION['user_student_id'] = $row['Student_ID'];
+ $_SESSION['user_type'] = $row['UserType'];
+ $_SESSION['user_fullname'] = $row['Full_Name'];
+
+ if( $_SESSION['user_type'] == "Student")
+ {
+ header("Location: Courses.php");
+ }
+
+ if( $_SESSION['user_type'] == "Lecturer")
+ {
+ header("Location: Courses.php");
+ }
+
+ if( $_SESSION['user_type'] == "TA")
+ {
+ header("Location: Courses.php");
+ }
+
+ if( $_SESSION['user_type'] == "Admin")
+ {
+ header("Location: Admin.php");
+ }
+ // report wrong pass if not correct
+ } else {
+ $_SESSION["wrong_pass"] = "Wrong Password.";
+ header("Location: index.php");
+ }
+ }
+ }
}
-
-
-
-
@@ -209,80 +214,39 @@ header("Location: index.php");
// ################################ Recover Password #####################################
if (!empty($_POST["frm_recover_password"])) {
- $email=mysqli_real_escape_string($con,$_POST["email"]);
-
- $result = mysqli_query($con,
- "SELECT * FROM Users_Table WHERE email='$email'");
-if(mysqli_num_rows($result)==0)
- {
- $_SESSION["info_recover_password"]="Email address is not recognised.";
-
+ $student_id = mysqli_real_escape_string($con,$_POST["sno"]);
+ $email = mysqli_real_escape_string($con,$_POST["email"]);
-echo "Email address was not recognised";
-return;
-header("Location: recover_password.php");
- }
- else
- {
- while($row = mysqli_fetch_assoc($result)) {
-
- $userid=$row['User_ID'];
-
- $email=urlencode($row['Email']);
- $pure_email=$row['Email'];
- $id=$row['Student_ID'];
-
- $token=$userid*$userid*$userid+$userid*0.00343;
-
- $name=$row['Full_Name'];
-$link="Click Here (็นๅป่ฟ้) ";
-$msg=urlencode("
Lab Report Repository System - ZJNU
Hi "
-.$name.
-" Here is your password recovery link , "
-.$link.
-" to reset your password , please ignore this message if you did not requested password recovery.