PLS DON'T FORGET TO CHECK THE ATTACHMENT TO SEE WIREFRAMES.
Plugin should be standard plugin format for SE4 that can be installed using SE.
I want to keep the website closed only to invited people, members can invite new members, and of course this feature is already in SE.
I should be able to create an invitation code in Admin page (under plugins configuration) which will expire on given date, and whoever knows this invite code, he/she should be able to signup before the expiration date, and will be assigned to pre-selected user role.
for example, i will just post this code in a linked in group, Facebook page or in tweeter, until the expiry date comes, people should be able to signup and they will be assigned to given user role.
Invite code(s) that I create will be valid for unlimited users, but limited by time only.
The visitor who has invitation code shall signup using his/her email, selected password, invitation code, First Name, Last Name, Company and Title, all required fields.
New Login/Sign Up:
As the website will be invitation only, visitors who are not member yet also should be able to request membership. So, I need a module which will replace the SE's original login/signup module. It should have Email and Password fields and Login button of course, but also should have the following links:
Sign up with invitation code: This link will direct to the signup page which is described above in the description of Invitation Module.
Request invitation code: It should show a page which asks visitor to fill in First Name, Last Name, Email, Company, Title and Note. Note field will be optional but all the others will be mandatory field. When someone requests invitation code, SE should send email about this request to the email address which was set in plugin configuration in admin page. In admin page, all requests should be listed and there should be a check box next to each line in the list. Admin will select the users using the checkbox and when he/she clicks on Accept button, a unique invitation code will be created for each selected user and SE will send "invitation email" to the selected users. If admin clicks on Reject button, then SE will only send "sorry email" to the selected users. The other option is Delete button, which will delete the selected requests from the list without doing any other action. These two email templates will be defined in plugin configuration in Admin page. The email templates should use these tokens: [FirstName], [LastName], [Email], [Company], [Title], [Note], [InvitationCode], [WebLink]. WebLink token will be dynamic URL where user can sign up. When user clicks on the link in the email, all his/her previously entered data in the request code form should be shown to the user (he/she shall be able to edit the data), and enters password he/she wants to use and when click on Submit button, new user will be created in SE with the predefined user role. For the users who cannot click on the link in email, there will be a static URL. When user opens this address, first he/she will be asked to enter the invitation code only, then based on the code, he will be shown the dynamic URL to complete the signup process. The invitation codes created based on visitor's request shall be valid for 7 days. Created codes shall be random, and formed by letters and numbers only and should be 8 characters, and it should be unique among the valid codes.