We have an internal website, written in Coldfusion, that allows our employees to request access (door code or keys) to some rooms or buildings. We need it re-written into PHP/MySQL.
Basically, this is how it works:
Joe needs access to the server room, the door is secured by a keypad. Joe goes to this website, if he does not have an account on that website, he needs to register with his work email. Once he is in, he fills out some forms saying he needs access to the server room, when he saves the request, the email or request is sent to the person in charge of that building. If the person approves Joe's access, he will use a different system to set up Joe's PIN. The approver would then log into the system and let Joe know that his access was approved. It would send Joe an email telling him to log into the system to get his PIN for the door code. Once he has viewed his PIN, he must memorize it or save it somewhere else. Once he has viewed his PIN, it must be deleted. We do not want to store everybody's PIN in the database.
What I need:
Allow people to log in via their email address and a password. If they don't have an account, they need to register with their email address and a password. If they forget their password, we want a "Forgot password" link at the login page and have their password reset and send to them via email. When they log in with their temporary password from a password reset, they need to create a new password.
We need 4 user levels:
1. Admin - makes changes to the system, can view all users
2. Authorized Individual - the person who approves access (code or key) for specific departments
3. Key Master - the person who gives physical keys to users
4. Users - people who apply for door codes or physical keys
We need to manage buildings and assign Authorized Individuals to specific departments or buildings. For example, we have 4 buildings. Sally is an Authorized Individual (A.I.) for building 1, Bob is an A.I. for Building 2 and 3, Joe is an A.I. for building 4. If I need access to building 3, I fill out a request, and the email goes to Bob, not Sally or Joe, for approval.
We have several buildings around the city. We need 3 levels (dropdowns?) of filtering to get to a specific access. For example: First we pick a department, then an agency then a building/room number. So we would need a page to add/delete/edit Departments, Agencies and Buildings.
We also need to keep track of what people have put in a request for. If Bob requested access to Building 1 in 2011, and access to Building 4 in 2013, we need to show that under his information whether he was approved or denied access. We also need to show which Authorized Individual (A.I.) has approved or denied access for users.
This is the basic idea. We will make minor changes along the way. We are not using cPanel, we have our own servers, so you will be accessing our server via FTP and you will have access to phpMyAdmin if necessary and if you need SSH access, that can be arranged as well. We will communicate via emails or Google GChat. There will be no video calls nor phone calls between you and me.
If there is a open source web app out there that will do close to what I need with minor changes, that is fine with me, unless you prefer to start from scratch.