Member Site Development
Member Site Development
This is for capturing the ideas and thoughts of how to build the members website to help the development process
- Hopefully this can be used as a reference as well to help build a user guide.
Overview
The site is online at here
Purpose
The purpose of this site is to allow members to login and manage their memberships, account balance, and RFID cards. As well as allow administrators to manage access privileges, and monitor usage, and provision new RFID cards.
Basic Features
Development Process
Task List
- Create A Development Sandbox
- Create User Setup Page
- Change User Group
- Assign Existing Card / Enable
- ???
- Add membership
- Admin Add Account
- Add Node Access Control
- Groups
- Individual
- Admin Access
- Limit Access to Membership/Cards to Members (not Public)
- Add a Founder Membership type
- Fix Welcome Email (still not sending)
Update User Card ManagementAdd ability to disable/enable cardsAdd ability to add cards (if user has permission)Add log of users Card Events
Add Card Page (accessibly by user of card and admins)Show Card Use LogAllow Editing DetailsAllow Enable/Disable- Show Card Balance (If any)
Add card management page for administratorList All CardsShow Specific User CardsAdd New CardsFix Update functionEdit Cards
- Update User Account Page (auth_admin/update_user_account) Bugs
Can't update user's nameCan't update user's phoneCan't update user's company- Can't update user's address
- Create Admin Account Creation Page
- Allow setting all of User info
- Upon creation user get special email notifying of account
- Email link allows user to click to activate account & setup their password
Update User Membership PageShow current MembershipsShow unused membershipsShow expired memberships
Add membership management page for administratorList All MembershipsShow Memberships of Single UserAdd MembershipsEdit Memberships
Add paypal support- Allow adding funds to accounts
- Learn more about PayPal APIs
- Activate memberships?
- Make site mobile friendly
- Use "$this->agent->is_mobile()"
- Layout views to flow well on a phone
Users
Details on how user data is structured. This is both database schema as well as how users interact with the system. Their primary interface will change based on their group and membership levels.
- User Data
- Username
- Password (salted hash)
- First/Last Name
- Mailing Address (Optional)
- Current $$ Balance
- User Items
- Cards
- Memberships
- Tool Time
- Purchase Log
Groups
These dictate the level of access the user has to the members website. Anyone can login to the site and generate a user account. At this point they will be a member of Guest, which allow them minimal access. Once promoted to the group
Types
- Guest
- This is a basic account with the ability to manage your own profile data
- Member
- This is an account that lets you Add Money, Buy memberships, Review your transaction logs, Manage your RFID cards, etc
- Admin
- This allows you to review all lower accounts, and perform actions on their behalf (except add money via paypal/etc), or add credits to user accounts
- Developer
- This allows you to review more technical aspects of the database/site. Allow any change to any data (except maybe things that break the database)
- This is protected from all but the site developer/site admin to protect against accidental site damage, but allow fixes to bugs and bug discovery in site.
Guest Features
- Update User Profile Data
- Name
- Password
- Username?
Member Features
- All Guest Features
- Access special member site?
- See transaction logs (money/purchases)
- Update Cards
- Set card name
- Disable Card
- See card logs (door access/tools/etc)
Admin Features
- All Member Features
- Administrate Users
- Set user groups
- Update user data
- Etc
- Administrate Cards
- Add new user card
- Connect cards to users
- Disable cards
- Rename cards
- Administrate Memberships
- Review all current/past memberships
- Add new memberships to users account
- Change memberships start/end date
- Reset pass memberships (for accidental use/comping)
- This would be to make a day pass unactivated
- Admin Items
- Add new items
- Update stock status of items
- Update items
- Name
- Description
- Price
Developer Features
- All admin features
- Developer Data
Memberships
We need to keep track of membership data. This will be useful for a history for the user as well as total history for admins. Finally this can be used to determine valid access to doors/equipment.
Types
List of membership types:
- Day Pass
- Week Pass
- Monthly Pass
- Monthly Full Access
- Yearly Full Access
- Etc
Money
We need to keep track of money in a user's account. This allows them to purchase both memberships, time on tools, as well as items from vending machines
RFID Cards
Keeping track of the RFID card information, logs of activities, and ensure the system is secure is the goal of this section
Type / Hardware
- Mifare?
Security
- RFID Serial Must be registered in DB
- Should probably implement OTP hash stored in card
- Read serial/hash
- Check DB, if valid card continue
- Generate new hash from: serial, secret value, last hash, and current timestamp
- Write new hash to card
- Read/Verify new hash on card
- Update DB with new hash
- Log valid card swipe
Hardware Interfaces
- Doors
- Strikeplates
- Open/Close Sensor?
- Doorbell?
- Tools
- Power Lockout
- Power Interlocks
- Dust Capture
- Power Vent
- Water Chiller
- Air assist