Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Link Recovery: Provide a method for students to request submissions links to be resent #9412

Closed
junming403 opened this issue Feb 9, 2019 · 7 comments
Labels
c.Epic Feature/task that is worth many smaller sub-features/sub-tasks

Comments

@junming403
Copy link
Member

TEAMMATES emails a unique link to each user that they can use to submit responses or view results. In some cases users delete that email by accident or cannot find it again in their inbox. It would be good to provide a way for users to request TEAMMATES to resend the link.

Provide a method for students to request submissions links to be resent. The request submission page needs to be protected using something like Captcha to avoid abuse. There should be some mechanism to prevent over-use of this feature by a user too.
As TEAMMATES uses email address to identify users, the user can specify which email the links should be sent to. It is fine to send all relevant links to the provided email address.
Provide a way for the admin to regenerate new submission links for a student. This is for cases where the student shares the submission link with others by mistake.

@damithc
Copy link
Contributor

damithc commented Feb 9, 2019

@junming403 note that someone else attempted this issue sometime back. You may want to dig up that PR to see if anything can be reused.

@damithc
Copy link
Contributor

damithc commented Feb 9, 2019

Here it is #8490

@junming403
Copy link
Member Author

Thank you prof, I will check.

@junming403
Copy link
Member Author

User flow from last issue.

  • Student goes to 'request for link' page.
  • Student goes through 'I'm not a bot' verification.
  • Student enters email address
  • TEAMMATES sends all links (or we can limit to links related to past 1 month) to the given email address

I feel send all links to the email address might not be a good idea. First, user might not want to all the links. Secondly, it will spam user. Can we provide a secret link through email where users can see all their historical/ongoing feedback sessions? Thus they can selectively select links to be resent.

Thus the user flow will be something like:

  • Student goes to 'request for link' page.
  • Student goes through 'I'm not a bot' verification.
  • Student enters email address
  • TEAMMATES send a link(contains a key, thus is private to the user) to the user given email.
  • User opens the link and see the list of feedback sessions he participated as this email.
  • User selectively require to resend links(or maybe not, they can directly go to the feedback session)

@damithc
Copy link
Contributor

damithc commented Feb 9, 2019

Indeed your proposed approach is more elegant 👍. The downside: it requires more code, more work from the user, and more work on TEAMMATES servers (i.e., cost us more money).
Let's go with the simpler approach first? Note it is meant to send all links in one email, not one email per link.

@junming403
Copy link
Member Author

I see, I will go with the simpler approach first. Thank you prof for the feedback.

@xpdavid xpdavid added the c.Epic Feature/task that is worth many smaller sub-features/sub-tasks label Feb 10, 2019
@wkurniawan07
Copy link
Member

it requires more code, more work from the user, and more work on TEAMMATES servers (i.e., cost us more money)

I have to disagree here. The work required to list the feedback sessions cannot add that much complication/server load if those feedback sessions have to be retrieved when sending the email containing all links in the first place.

But all other factors considered, the simpler approach should be the way to go for now.

junming403 pushed a commit that referenced this issue Mar 15, 2019
…ssions links to be resent (frontend) (#9447)

* Add placeholder link recovery page

* Add Link Recovery page to nav bar

* Add link recovery email form

Reduce form width

* Add link recovery http request

Reset email field if success

Add error message for submit with empty input

* Add email format check and error

Disable submit button if invalid input

* Add recaptcha widget with ngx-captcha

Add CSP to backend WebPageServlet

* Change to angular reactive form

* Reload recaptcha on submit

* Remove dynamic error messages

* Change local captcha site key to config value

* Add test file

Import NgxCaptchaModule to fix test

* Update CSP

* Add recaptcha secret key as config value

* Add reCAPTCHA response verification

Change implementation using apache lib

* Add recaptcha test keys

* Add RecaptchaVerifierTest

* Changes based on review

* Add catch for exception

* Remove reload function

* Update catch

* Remove tslint suppression

* Add ApiRequest class

* Refactor RecaptchaVerifier

* Add negative test cases for RecaptchaVerifier

* Minor frontend changes

* Remove API dependency from test

* Update exception handling

* Use Logger to print stack trace

* Change names to SessionLinksRecovery

* Add reCAPTCHA docs

* Remove test keys from config

* Add captcha.md

* Update RecaptchaVerifier and Logger

* Update ApiRequest -> HttpRequest

* Add http timeout

* Remove unnecessary lines

* Changes based on review

* Update test cases

* Minor text changes

* Minor fixes

* Add secret key as method parameter

* Minor fixes
junming403 added a commit that referenced this issue Apr 7, 2019
…ssions links to be resent (#9413)

* implement api skeleton

* implement api skeleton

* add email template

* add email template

* complete skeleton

* complete skeleton

* add logic for generate restore key

* add logic for generate restore key

* break down imports

* break down imports

* tiny fix

* tiny fix

* rebuild email generator

* rebuild email generator

* update link-recovery

* update link-recovery

* add newlione at the end of file

* add newlione at the end of file

* update

* add link-recovery action test

* tiny fixes

* add sorting

* refactor for response DTO

* add more test cases

* update template

* update words for teamplates

* update words for teamplates

* remove additional new spaces

* various fixes after review

* various fixes accourding to Review

* add tests for link-recovery

* variosu fixes according to review

* rename LinkRecovery -> SessionLinkRecovery

* change email output format and update tests

* fix typo according to review

* minor fixes and add template for user emial not exist

* Fixes according to review

* add validation for email address

* Update HTTP method to be POST

* Integrate with front end, captcha

* fixes according to review

* fixes according to review

* Fixes according to review

* remove extra empty line

* refine email content English

* fixes according to review

* fixes according to review

* refactor email generator logic

* move verify email contents to emailGenerator tests

* update snapshot tests

* fixes according to review
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c.Epic Feature/task that is worth many smaller sub-features/sub-tasks
Projects
None yet
Development

No branches or pull requests

4 participants