CSC/ECE 517 Fall 2017/E17A6. Fix account creation over web to work reasonably

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction to Expertiza

Expertiza is a educational website that allows school users to submit peer reviews on assignments. To register to use this website, one needs to be either a course TA or Instructor and send a request to expertiza administrator to get approved. The request function only serves TAs and Instructors, so students won't be able to register. A student account is created by instructors or TAs. The whole purpose of this approval process is because students have no point of using this website without enrolling to an instructors course first, so they shouldn't request accounts from expertiza but from their instructors and TAs.

A pending request page that displays all the requests should also be able to perform actions like approve or reject with an note.

However, currently, all of these are done manually, which means no pending request page currently exists, no simple approve or reject action, and no user experience, and all users are added into the database through command line operations in the database(only instructor and TA roles which is acceptable currently but not when more other institutions try to user Expertiza).

In addition, we also want users be able to add their institution if it does not show under the list provided by us.

Problem Statement

Overall Introduction

Request account function is currently not working properly. A new user who tries to request an expertiza account can do so, but the instructor can see yet has no power to approve any request. The approval process is currently done manually, which is cumbersome. Our mission is to fix the request account functionality so that whoever requests for a new accounts can be approved by instructor clicking a button, and secondly, optimize the functionality to improve user experience.

Problem details

1. New user request page

After you click “REQUEST ACCOUNT” button, Expertiza will redirect to a page to allow submitting new user request. Currently, a new user can only choose institution from the dropdown. The new user should be able to add a new institution. Modifying the current view to allow new user to add a new institution if s/he cannot find it from dropdown. The new institution should be able to saved into institutions table as a new record. And the newly created request will be stored in requested_users table and make sure to save correct institution_id.

It will be better to add a place to ask new user to write a brief introduction (a textarea). The data should also be saved to requested_users table. Write a migration file to add a new column (type: text) to requested_users table. Also, in models/requested_user.rb, there are some validations, such as validate email address. It will be better to update the flash message on the view when validation fails.

2. Super-admin and admin are able to approve or decline new user requests.

Currently, you have to go to /users/list_pending_requested this url to access a list of pending requests. It will be better to add an option in “Administration > Show…” menu.

Also, Make “Email Address” column in /users/list_pending_requested page clickable. So that super-admin or admin could converse with requesters by clicking email addresses directly.

3. The record retains after admin's approval.

After super-admin or admin approves the request, make sure the record does not disappear on the page. And there should be an email send to email address offered by requester.

Task Specifications and Plan

1. Add institution <br\> -A registering user should be able to choose their institution from a drop-down menu, but they should also be able to add an institution if they couldn't find one. <br\>

-The new institution should be saved as a new record into the institution table<br\>

-New account request should be saved to requested_users table with correct institution id.<br\>

2.superadmin, admin should be able to approve/decline requests<br\>

-add a new drop-down item under “Administration > Show…” so requests can be visually displayed and handled<br\> -enable the "approve" function for admin and superadmin<br\>

-make clickable user email address so a conversation is possible<br\>

-an email should be sent when a request is approved or declined<br\>

-all record should be kept on the page even it has been handled<br\>

Fix 1. Add institution

- redesign the view shown in the previous section to include a field named institution in the current form to allow user to submit their institution if they couldn't find one in the list, and save it into the table corresponding to the form it submits to.

- design a requested_user table to save all account requests

Fix 2. Add new Page and Action

- to create an new view that can show all pending account requests and include actions like approve and reject to allow instructors to process requests on the same page

- create corresponding new controller with methods corresponding to actions like reject, approve and index.

Test Plan

Both manual and RSpec test will be performed on the following items.

1. a proper error message for improper information filled in, such as wrong email address format or existing account.

2. When a pending account gets approved or rejected, an email will be sent to the submitted email address.

3. A new item "show" should be added under administration and direct instructor to pending requests page when clicked

4. pending requests will have an email column that is clickable which allows instructor to send emails to applicants before a decision is made.

5. when a request is processed, its record is still kept with the status of processed.

Team Informantion

Guiyang Fan(gfan@ncsu.edu)

Haoxu Ren(hren3@ncsu.edu)

Dongyu Wang(dwang32@ncsu.edu)

Yichi Zhang