Commit graph

103 commits

Author SHA1 Message Date
Scott Erickson
f0fa88206d Add Enrollment start/end dates, remove self-serve
* Refactor several related endpoints and views
* Redesign EnrollmentView, add TeacherContactModal
* Add "Enrollment Status" tab to TeacherClassView
* Delete PurchaseCoursesView and related files
* Style-flatten RemoveStudentModal
* Fix error handling in ActivateLicensesModal
* TeacherCoursesView loads faster by only loading course campaigns, and not load prepaids
2016-05-24 14:07:28 -07:00
phoenixeliot
8496343a02 Improve student account recovery
This adds the ability to verify email addresses of a user, so we know they have access to the email address on their account.

Until a user has verified their email address, any teacher of a class they're in can reset their password for them via the Teacher Dashboard. When a user's email address is verified, a teacher may trigger a password recovery email to be sent to the student.

Verification links are valid forever, until the user changes the email address they have on file. They are created using a timestamp, with a sha256 of timestamp+salt+userID+email. Currently the hash value is rather long, could be shorter.

Squashed commit messages:

Add server endpoints for verifying email address

Add server endpoints for verifying email address (pt 2)

Add Server+Client endpoint for sending verification email

Add client view for verification links

Add Edit Student Modal for resetting passwords

Add specs for EditStudentModal

Tweak method name in EditStudentModal

Add edit student button to TeacherClassView

Fix up frontend for teacher password resetting

Add middleware for teacher password resetting

Improve button UX in EditStudentModal

Add JoinClassModal

Add welcome emails, use broad name

Use email without domain as fallback instead of full email

Fetch user on edit student modal open

Don't allow password reset if student email is verified

Set role to student on user signup with classCode

Tweak interface for joinClassModal

Add button to request verification email for yourself

Fix verify email template ID

Move text to en.coffee

Minor tweaks

Fix code review comments

Fix some tests, disable a broken one

Fix misc tests

Fix more tests

Refactor recovery email sending to auth

Fix overbroad sass

Add options to refactored recovery email function

Rename getByCode to fetchByCode

Fix error message

Fix up error handling in users middleware

Use .get instead of .toObject

Use findById

Fix more code review comments

Disable still-broken test
2016-05-24 14:07:28 -07:00
Scott Erickson
a89782b9c6 Fix /auth/unsubscribe for emails with + in them 2016-05-18 16:50:05 -07:00
Matt Lott
6f6d65a005 /courses/update-account page
Allows a user to update their account based on their current role of:
individual, student, or teacher

Closes #3647
2016-05-18 06:06:28 -07:00
Scott Erickson
f6b3016d85 POST /db/classroom/-/members joins any free course instances, rather then CoursesView doing so 2016-05-16 16:47:08 -07:00
Scott Erickson
f7a6d354af Add school and teacher names to invite email context 2016-05-06 13:28:19 -07:00
Scott Erickson
0ed99565d3 Make delighted profiles for teachers only, instead of all users 2016-05-06 12:45:11 -07:00
Scott Erickson
93f940e196 Refactor, spec and fix GET /healthcheck
For #3469
2016-05-05 13:11:39 -07:00
Scott Erickson
b125f9b2fa Refactor rest of /db/campaign routes
For #3469
2016-05-05 13:11:39 -07:00
phoenixeliot
72e4e6c6c8 Add specs for next level from default course 2016-04-28 12:46:30 -07:00
phoenixeliot
91fa467251 Fix teacher sessionless play; uses default campaign levels
Fix typo

Fix race condition with loading next level

Return an empty object for next level instead of an error;
Supermodel has a race condition when some of the models fail to load,
when we override an error response as "success".

Fix next level spec

Remove comment per Scott's request
2016-04-28 12:46:09 -07:00
Scott Erickson
675e3290ac Lock course content to classrooms 2016-04-27 09:58:04 -07:00
Josh Callebaut
c4652d82e2 Implements the SPADE logger into the SpellView
* Updates spade.js vendor file, adds a sublime-project for developers to use
* Moves server logic away from handlers
* Moves session update logic to middleware, sets up server schema to autorender IDs as ObjectIDs
* Modernizes the supermodel loading scheme and switches from constructor to initalize
2016-04-26 09:56:30 -07:00
phoenixeliot
e2d08fa7cf Stuff
Partially fix ActivateLicensesModal.spec

[IN PROGRESS] Don't display deleted users

Move userID to classroom.deletedMembers on user delete (not retroactive)

Fix PDF links for course guides, remove old PDFs from repo

Remove deprecated SalesView

Remove underline for not-yet-linked student names

Only show class select when there's more than one

Ignore case when sorting student names

Use student.broadName instead of name for display and sorting

Fix initial load not showing progress after joining a course (hacky)

Fix text entry for enrollment number input

Fix enrollment statistics

Fix enrollment stats completely (and add back in per-class unenrolled count)

Add deletedMembers to classroom schema

More fixes to enrollment stats (don't count nonmember prepaids)

Don't use 0 as implicit false for openSpots

Update suggested number of credit to buy automatically

Fix classroom edit form ignoring cleared values

Add alert text when more users selected than enrollments available

Alert user when trying to assign course to unenrolled students

Alert user when assigning course to nobody

Add some tests for TeacherClassView bulk assign alerts

Fix TeacherClassView tests failing without demos

Use model/collection.fakeRequests :D

Remove unused comment

Fix handling of improperly sorted deleted users on clientside

Add test for moving deleted users to deletedMembers

Add script for moving all deleted classroom members to classroom.deletedMembers

Completely rewrite tallying up enrollment statistics

Fix some tests to not be dependent on logged-in user

Address PR comments

Fix default number of enrollments to buy

Fix i18n for not enough enrollments

Use custom error message for classroom name length
2016-04-19 12:32:20 -07:00
Scott Erickson
bd6a266f60 Refactor POST /db/classroom and PUT /db/campaign/:handle and their tests for #3469 2016-04-13 11:39:29 -07:00
Scott Erickson
f1f1c23fd4 Refactor /auth endpoints for #3469
* Take `/server/routes/auth` and move most of the logic to `/server/middleware/auth`, refactoring to use generators.
* List all `/auth/*` endpoints in `/server/routes/index.coffee`.
* Fill in testing gaps for `/auth/unsubscribe`.
* Add debug log when `sendwithus` is not operational, so it 'works' in development and testing.
* Use passport properly!
* Track Facebook and G+ logins in user activity as well as passport logins.
2016-04-12 12:07:11 -07:00
Scott Erickson
92fecd8d5c Move some user tests from functional to unit 2016-04-11 14:04:24 -07:00
Scott Erickson
b33620779d Refactor achievement handler for #3469 2016-04-11 12:00:22 -07:00
Scott Erickson
442c33bfe1 Refactor auth specs for #3469 2016-04-11 10:35:46 -07:00
Scott Erickson
54034b805f Refactor admin specs for #3469 2016-04-08 15:31:57 -07:00
Scott Erickson
823dbd620b Refactor achievement specs for #3469 2016-04-08 15:06:05 -07:00
Scott Erickson
514248b39f Refactor course instance server tests to use generators 2016-04-08 10:46:39 -07:00
Matt Lott
9865e6da22 Turn off demo request 2 enrollments and approved mails 2016-04-07 12:52:11 -07:00
Scott Erickson
29cd880480 Refactor handlers to /server/handlers 2016-04-07 09:40:53 -07:00
Scott Erickson
c3e5416166 Refactor server models into /server/models, remove request and mongoose from test globals 2016-04-06 16:06:52 -07:00
phoenixeliot
beb53d9f2f Various fixes and changes to teacher-accounts and teacher-dashboard 2016-04-04 15:42:29 -07:00
Scott Erickson
58a5df7a4f Restrict teacher and student accounts to their respective areas and actions 2016-04-04 15:20:34 -07:00
phoenixeliot
4a72ffc185 Implement all of teacher-dashboard 2016-04-04 15:19:27 -07:00
Scott Erickson
bd3a77da9f Implement teacher accounts 2016-04-04 15:18:06 -07:00
Scott Erickson
c2f17edaea Rewrite concurrent prepaid test
This test has been unstable, possibly because it was using one request instance to fire off
requests for many users. Rewrote using generators and multiple request instances with
separate cookie jars. For #3469.
2016-03-30 12:00:12 -07:00
Matt Lott
f53d46cb90 🐛Fix missing User reference in trial-requests 2016-03-22 13:57:04 -07:00
Matt Lott
5d71acba05 Replace HipChat with Slack 2016-03-18 17:05:21 -07:00
Scott Erickson
f21baa7af5 Migrate /db/trial.request for #3469 2016-03-18 11:03:55 -07:00
Scott Erickson
464430200c Fix AccountSettingsView to only try to change permissions in development 2016-03-11 15:00:55 -08:00
Scott Erickson
ebc98f988f Refactor CreateAccountModal out of AuthModal, add class code to signup 2016-03-10 10:52:11 -08:00
Scott Erickson
a4461f94ce Remove a test focus 2016-03-04 10:50:56 -08:00
Scott Erickson
a2249f8df1 Add return-to-admin (turn off espionage mode) 2016-03-04 10:43:17 -08:00
Scott Erickson
e1e5b66d7f Update request, make server tests work with it 2016-03-03 16:07:07 -08:00
Scott Erickson
7749f9cc0a Refactor out promisifyAll, use Mongoose's promises and promisify 2016-02-22 16:03:21 -08:00
Scott Erickson
becad06750 Refactor ArticleEditView and PatchesView to use model endpoint functions 2016-02-22 16:03:21 -08:00
Scott Erickson
7fb08f343a Refactor /db/article to use generators 2016-02-22 16:03:21 -08:00
Scott Erickson
8829e26f11 Turn off the redeem-many-people-at-once test
User generation is causing errors. Putting this test on the list to refactor.
2016-02-22 14:10:30 -08:00
Matt Lott
cb29d7068b Add prepaids to payments
Closes #3402
2016-02-17 10:08:44 -08:00
Scott Erickson
bb38c58903 Properly fix duplicate course instances
* Add script to merge existing course instances
* Have client only send one course instance creation
* Have server return existing course instance if one for the given classroom/course exists
* Remove bandaid code from ClassroomView
2016-02-08 12:48:29 -08:00
Scott Erickson
51408a94de Update jasmine for server tests to 2.4.1, fix server focus tests
Before if you focused tests, they would bypass the setup "tests" and break.
Now the server setup logic is in a beforeEach.
2016-01-19 16:34:48 -08:00
Matt Lott
d2921f66cb Add approved teacher trials to mail news group 2016-01-17 07:39:30 -08:00
Nick Winter
67f7ce1e0d Add Brazil coupon test. Generalize prices in subscription test a bit more. Handle brazil_basic_subscription product in one more place. 2016-01-12 12:25:13 -08:00
Matt Lott
d74b61fd96 Update approved trial request server test 2016-01-07 16:14:33 -08:00
Scott Erickson
8ddf36ce3c Reenable prepaid test "bunch of people trying to redeem at once" 2015-12-18 10:45:36 -08:00
Scott Erickson
def3e9a009 Improve travis success rate
https://travis-ci.org/codecombat/codecombat/builds/96076589

Failures:
1) Recalculate Achievements remove earned achievements
  Message:
    Expected 1 to be 0.
  Stack:
    Error: Expected 1 to be 0.
...

Apparently EarnedAchievement creation from previous tests bleeds into this test case.
Adding a timeout to minimize the race condition problem here.
2015-12-18 10:40:37 -08:00
Scott Erickson
a28e7bde2c Update tests for db products, some cleanup 2015-12-16 16:39:44 -08:00
Scott Erickson
7c516c4d9f Move product information to the db 2015-12-14 11:10:50 -08:00
Scott Erickson
23e3821e24 Switch from jasmine-node to jasmine, run server tests on a single process
This collapses the difference between master and single-process-server-tests, to
remove some larger fixtures files that were in that feature branch.
2015-12-09 14:27:10 -08:00