Commit Graph

37 Commits

Author SHA1 Message Date
Cody Cutrer 06763dd519 add # frozen_string_literal: true for lib
Change-Id: I59b751cac52367a89e03f572477f0cf1d607b405
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/251155
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2020-10-27 20:49:50 +00:00
Cody Cutrer 79d0785a49 encoding has defaulted to UTF-8 for a long time; don't need a magic comment for it
Change-Id: Ife4d6b76d63fff14897421b58d9fcea8f423311c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/251163
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Burroughs <jburroughs@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2020-10-26 21:26:20 +00:00
Cody Cutrer f753a5e432 update authlogic
two breaking changes:
 * validations are gone, just use vanilla rails validations
 * authenticates_many is gone. use a scoping call instead

Change-Id: Iad2a5d4655ad116e85ea3ea98bc209b37cbdba39
Reviewed-on: https://gerrit.instructure.com/202619
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-08-12 18:02:02 +00:00
Landon Wilkins 45b8efda41 da licença part 36
add consistent license headers to all source files

Change-Id: I15e544768e7361fc050089a5ed4699f7ee96bb2c
Reviewed-on: https://gerrit.instructure.com/110064
Tested-by: Jenkins
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Jon Jensen <jon@instructure.com>
QA-Review: Jon Jensen <jon@instructure.com>
2017-04-28 17:31:17 +00:00
James Williams 91e416a85c user lists v2
doesn't worry about the creation of users, only returns
whether the users are found or not and whether there
are multiple matches across the trusted accounts
(doesn't try to prioritize one or the other, instead letting
 the user decide which user to add)

also only uses one search method so it's more explicit how
we're trying to find users

how to use:
similar to current user list,
post to /courses/X/user_lists.json
with a 'user_list' text parameter
but add additional parameters
 - 'v2' set to 1 or true
 - 'search_type' set to either
 'unique_id' (login ID)
 'sis_user_id' (also searches integration id because why not)
 'cc_type' (searches email addresses and sms phone numbers)

closes #CNVS-32175

Change-Id: I175e49a93525674ae97a067b9e8443812fa964f0
Reviewed-on: https://gerrit.instructure.com/91430
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins
QA-Review: Heath Hales <hhales@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2016-11-15 13:56:03 +00:00
Cody Cutrer 8710883095 don't allow non-site admins to add site admins to courses/accounts
fixes CNVS-28101

test plan:
 * as an account admin (not site admin), try to add a site admin to a
   course via the UI
 * it should not find the site admin
 * try again as a site admin (adding to the same course that's not
   part of site admin)
 * it should work

Change-Id: Ib2502a1a0a35bee331d92d06f5d92e1d8762c226
Reviewed-on: https://gerrit.instructure.com/74755
Tested-by: Jenkins
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Jeremy Putnam <jeremyp@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2016-03-24 00:20:53 +00:00
Cody Cutrer 48e76cecdb moar qualified name fixes found by specs
refs CNVS-21900

Change-Id: Ibc22af3abd35e27650b8667b57e06a00349878b3
Reviewed-on: https://gerrit.instructure.com/65858
Tested-by: Jenkins
Reviewed-by: Mike Nomitch <mnomitch@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2015-10-27 15:10:23 +00:00
James Williams 94d48c3bf0 rails4: fix user_list_spec and user_merge_spec
refs #CNVS-21596

Change-Id: I1231665cc40c039bf036a853579cebdb34cb8617
Reviewed-on: https://gerrit.instructure.com/58691
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
QA-Review: James Williams  <jamesw@instructure.com>
2015-07-17 17:29:09 +00:00
James Williams 0fce420fd6 prefer local accounts over trusted when searching by sis_user_id
test plan:
* create a user on Site Admin account with a
 name + email
* edit the user's login to give it an SIS ID

* create a user on a local account with a
 different name + email
* edit the user's login to give it the same
 SIS ID as the previous user

* try to add a user to a local course by
 searching by the SIS ID
* should find the local user (not the Site
 Admin user)

closes #CNVS-19626

Change-Id: Id970023c079010080a1d7a8d93a4494a10bbd7c6
Reviewed-on: https://gerrit.instructure.com/51634
Tested-by: Jenkins
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
Product-Review: James Williams  <jamesw@instructure.com>
2015-04-07 17:39:00 +00:00
Cody Cutrer 754d3bf053 always search the account's shard for user list
refs CNVS-18296

in case global lookups is enabled, but not populated; this fixes
that problem while not added any extra load in 99.99% of happy
cases

test plan:
 * configure global_lookups, but don't populate them
 * adding an existing user to a course should still
   work

Change-Id: If3012ee5e8b4bd2d79bee840fc1250fc43b7f186
Reviewed-on: https://gerrit.instructure.com/48796
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2015-02-13 20:26:30 +00:00
James Williams 0381cebef3 fix user list e-mail parsing with unicode
test plan:
* use the course users page to add users
with names that include unicode characters
(such as accents)
* should not fail with "unparseable" errors

closes #CNVS-15085

Change-Id: Ieee80adbabed05f42aab8040c4351e35b680a75e
Reviewed-on: https://gerrit.instructure.com/41766
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
2014-09-26 13:56:14 +00:00
Cody Cutrer 5d42d023d2 no more dynamic finders (lib)
refs CNVS-15126

Change-Id: I4087b1c2442c5b8f70ce2138bf4aeef6ef7e59cd
Reviewed-on: https://gerrit.instructure.com/41259
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2014-09-23 16:53:56 +00:00
James Williams 81558f728c remove rails 2 support
closes #CNVS-14261

Change-Id: I1b0e8a4438ab659ecd1ac8462bc3559d810989b3
Reviewed-on: https://gerrit.instructure.com/38744
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2014-08-06 18:16:19 +00:00
Cody Cutrer de1ba85157 use subquery instead of join for user list query
fixes CNVS-10869

avoids a large temp file being created

Change-Id: Ife71a45a96af56716c99ed02f229686a058e8d45
Reviewed-on: https://gerrit.instructure.com/29492
Reviewed-by: Rob Orton <rob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2014-01-31 18:16:17 +00:00
Cody Cutrer d9037c1837 TMail was replaced by Mail in Rails 3
Change-Id: I7b0c1e31fc5f56464d4ca89fa23a1190b2541edb
Reviewed-on: https://gerrit.instructure.com/28730
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: James Williams  <jamesw@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2014-01-20 17:20:19 +00:00
Cody Cutrer 6262a8ae07 don't filter SMS by global lookups
refs CNVS-9939

it's not an exact match, so it won't work

Change-Id: I7ab20a0e9bbbd6f8b06079addcb3baf5362788fa
Reviewed-on: https://gerrit.instructure.com/27814
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2013-12-21 01:59:00 +00:00
Cody Cutrer 0b2bba04b4 filter pseudonym lookups from trusted_account_ids to associated_shards
fixes CNVS-9085

test plan:
 * login using site admin credentials at the default account
 * via the UI, enroll a site admin via login, sis id, and e-mail
   address in a course

Change-Id: If525949d4da780e4750ecf53f7acd8aa5440387e
Reviewed-on: https://gerrit.instructure.com/26729
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2013-12-04 19:50:12 +00:00
Cody Cutrer d3f0b18684 validate nullness in the db on a bunch of columns
fixes CNVS-7414

Change-Id: I60978f66d88d916dc5736dbb975715172bd1e14b
Reviewed-on: https://gerrit.instructure.com/23141
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
2013-09-12 22:20:39 +00:00
Jacob Fugal f2a8d4fe6d replace to_json overrides with as_json overrides
refs CNVS-7597

given Object#to_json's default implementation, the old to_json
overrides follow from the new as_json overrides. and now we can also
call as_json and get the expected non-serialized data.

test-plan: N/A

Change-Id: Ia57562e0c73752a13023cad4ef6bae9435790bee
Reviewed-on: https://gerrit.instructure.com/23647
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Jacob Fugal <jacob@instructure.com>
QA-Review: Jacob Fugal <jacob@instructure.com>
2013-08-29 22:39:32 +00:00
James Williams 9cf8aa2960 allow adding course users by sis id
test plan:
* create a user and login with a sis id
* confirm that the user can be added to a course
through the course 'People' page, by including
their sis id in the list (just as with the login id)

closes #CNVS-7086

Change-Id: Ia4369ba5e78083c233b3921aa1b9246f2db6824e
Reviewed-on: https://gerrit.instructure.com/22647
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Clare Strong <clare@instructure.com>
2013-07-25 18:16:09 +00:00
Cody Cutrer 5ffbcbeb05 arel-ify lib
excluding api_find, which needs more work

refs CNVS-4706

Change-Id: I013d0660ff2b8dbe2abf6a5c973bd1203f432f99
Reviewed-on: https://gerrit.instructure.com/18921
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Clare Hetherington <clare@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2013-04-01 19:12:22 +00:00
Mark Ericksen 799462e1bd Capture a users initial_enrollment_type when invited to a course. Fixes #10893
This also refactors the UserList constructor to better support passing this
information in when a user is being created through an invitation.

Testing Steps:
=========
* In a course, go the Settings > Users tab.
* Under "Add Course Users", select a type (ex: "Students") and
  give the user information.
   * Ex: "Student Test" <studenttest@example.com>
* After adding the user, verify in the console that the user has
  the correct initial_enrollment_type. (As far as I know, this
  information isn't displayed anywhere)
   * Sample console script:
      * u = User.last
      * u.initial_enrollment_type   #=> "student"

Can verify that this works for the following supported types
"student", "teacher", "ta", "observer".
Anything else (like Designers) doesn't get stored.

Change-Id: I5d900c421a04e95b5b92e21cd57e7694d1e98958
Reviewed-on: https://gerrit.instructure.com/14110
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
2012-10-04 14:26:15 -06:00
Cody Cutrer c37b5dd01e support cross-shard trusted accounts for UserList
test plan:
 * have a site admin user in shard 1
 * add that user by their login id as an admin to an account in
   shard 2 (in the UI)
 * it should work
 * repeat for enrolling in a course

Change-Id: I403f0f853056d4ea1dd9628c70e882fdc3cfd8bf
Reviewed-on: https://gerrit.instructure.com/14090
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2012-10-03 16:24:56 -06:00
Simon Williams f85e5801df group join/leave/invite api
allow users to join, or request to join groups and leave groups they are part
of, if the group allows those actions.  allow moderators to invite others
to the group by email address.  allows moderators to add or remove moderator
privleges of other group members.

test plan:
- no ui yet, so try these api actions manually and make sure they do the right
  thing.

Change-Id: I2765f07acb131e503add67b0daa37f18fdbde6c2
Reviewed-on: https://gerrit.instructure.com/11229
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
2012-06-08 17:26:14 -06:00
Cody Cutrer 1282919d92 fix pretending for preferred search method creating users with invalid emails
fixes #7838

test plan:
 * add an admin to an account by searching for "allfjaldjsf" (or some
   other random string)
 * it should say the user could not be found

Change-Id: I2a2da0790ed64cacf01229b10f3bc7059b1431ad
Reviewed-on: https://gerrit.instructure.com/9855
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-04-09 12:14:20 -06:00
Cody Cutrer fa824fc133 fix pseudonyms not being found if a conflicting communication exists
fixes #7422, #7151

test plan:
 * create a user with a login id that's a 10 digit number
 * you should be able to add that user to a course
 * enable open registration
 * create a user with a login id that's an e-mail address.  add that
   e-mail address to another user.
 * you should be able to add specifically the first user by using
   the e-mail address

Change-Id: Ia84658f023f5017cf5f5a635ee737afd4e4ab7c0
Reviewed-on: https://gerrit.instructure.com/8979
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-02-28 09:10:34 -07:00
Cody Cutrer cd0064d3d1 introduce preferred user list search mode
closes #7059, #7411

preferred is a compromise between open registration and closed
registration. if a single user is found, that user is found without
introducing any temporary user to allow user disambiguation.  if no
users are found, or multiple users are found, it's the same behavior
as open registration.

as part of this, the "only search existing users" checkbox has been
removed. instead, preferred searching will be used in the following
cases:
 * adding an admin, and open registration is enabled
 * adding an admin, open registration is disabled, and the user
   has permission to create new users
 * adding a user to a course, open registration is enabled, and
   delegated authentication is in use
 * adding a user to a course, open registration is disabled, and
   the user has permission to create new users

the notable case that preferred searching is not used, and the
user would want to use search existing users is open registration
enabled, and adding a user to a course.  in this case, a temporary
user will be created instead of sending the invitation to the
existing user.  however, the end user experience is identical
(invitation sent to e-mail, invitation visible in the same locations
in the UI), with the small exception that the end user gets the
opportunity to create a separate account if desired (but not
preferred).

test plan:
 * go through each of the cases above for a user that doesn't exist
   yet, a single matching user exists, or multiple users exist.
   it should behave as described above

Change-Id: Idbc7fe23bfc7430b4cd25f7981f5dc08b9e4ffda
Reviewed-on: https://gerrit.instructure.com/8966
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-02-28 09:10:23 -07:00
Cody Cutrer f15f39fcc0 require an active pseudonym trusted by the target account fixes #6536
test plan:
 * need to have accounts that don't trust each other (i.e. from a
   plugin)
 * create a user in account A with an SMS channel.  Disable open
   registration in account B.  You should not be able to add the
   user from account A by SMS.

Change-Id: Ic68527cab1d0f581281fe8344583cfe10905f63a
Reviewed-on: https://gerrit.instructure.com/7264
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
2011-12-12 14:12:40 -07:00
Cody Cutrer e7d4fa2f76 don't treat a user with multiple pseudonyms as a dup
refs #6533

this covers both the case of multiple pseudonyms from different accounts,
or multiple pseudonyms in a single account when looking up by email

test plan:
 * disable open registration
 * create a user with multiple pseudonyms, and a non-matching email;
   you should be able to find and add the user by their e-mail
 * create a user with (matching) pseudonyms in account A and B; you
   should be able to find and add the user in account C by their
   existing pseudonym(s)

Change-Id: I89ce34a6a36dc7c534b35386551865b56e71bf7f
Reviewed-on: https://gerrit.instructure.com/7263
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
2011-12-12 13:44:57 -07:00
Cody Cutrer 43c5f0e835 when searching for existing users, also search trusted accounts closes #6534
test plan:
 * disable open registration in all accounts you use
 * create users with the same login in multiple accounts, and invite
   user to a course in one of the accounts; it should find the user
   from the account the course is in
 * create users in the same login in multiple accounts, and invite
   user to a course in an account that does not have that login; it
   should not find any users (can't resolve the conflict)
 * if you have a plugin the changes the definition of a trusted
   account, try to add user from one account to an account that does
   not trust the first; it should not find any users

Change-Id: I5e5283e8f41bb0aea00ae3a48e4dc87a7e811978
Reviewed-on: https://gerrit.instructure.com/7258
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
2011-12-12 13:02:27 -07:00
Cody Cutrer de36aa19dd don't create temp users for closed registration refs #5833
this case happens when open registration is disabled, the user's
pseudonym does not match their e-mail address, and the user is
invited via their e-mail address

test plan: do the above, and it should not create a temporary user

Change-Id: Ibf864d25f94d6436f1ebc5b9486eb0df8ca28d6c
Reviewed-on: https://gerrit.instructure.com/7014
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-11-16 14:18:57 -07:00
Cody Cutrer 9b9fd331a2 fix permission check for TAs refs #5833
also add a checkbox for admins to only search for existing users
(i.e. ignore open registration)

Change-Id: I84d2ba7992339b37506e41a50c336325af0ac73b
testplan:
 * add a student to a course as a TA
 * add a user to an account or a course as an admin, with and without
   open registration, with and without manage_user_logins permission,
   with and without checking "search only existing users" (not all
   combinations applicable, each underlying condition is checked in
   specs)
Reviewed-on: https://gerrit.instructure.com/6969
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-11-16 10:28:51 -07:00
Cody Cutrer c59c0f593f refactor user creation/invitations closes #5833
fixes #5573, #5572, #5753

 * communication channels are now only unique within a single user
 * UserList changes
   * Always resolve pseudonym#unique_ids
   * Support looking up by SMS CCs
   * Option to either require e-mails match an existing CC,
     or e-mails that don't match a Pseudonym will always be
     returned unattached (relying on better merging behavior
     to not have a gazillion accounts created)
   * Method to return users, creating new ones (*without* a
     Pseudonym) if necessary. (can't create with a pseudonym,
     since Pseudonym#unique_id is still unique, I can't have
     multiple outstanding users with the same unique_id)
 * EnrollmentsFromUserList is mostly gutted, now using UserList's
   functionality directy.
 * Use UserList for adding account admins, removing the now
   unused Account#add_admin => User#find_by_email/User#assert_by_email
   codepath
 * Update UsersController#create to not worry about duplicate
   communication channels
 * Remove AccountsController#add_user, and just use
   UsersController#create
 * Change SIS::UserImporter to send out a merge opportunity
   e-mail if a conflicting CC is found (but still create the CC)
 * In /profile, don't worry about conflicting CCs (the CC confirmation
   process will now allow merging)
   * Remove CommunicationChannelsController#try_merge and #merge
 * For the non-simple case of CoursesController#enrollment_invitation
   redirect to /register (CommunicationsChannelController#confirm)
   * Remove CoursesController#transfer_enrollment
 * Move PseudonymsController#registration_confirmation to
   CommunicationChannelsController#confirm (have to be able to
   register an account without a Pseudonym yet)
   * Fold the old direct confirm functionality in, if there are
     no available merge opportunities
   * Allow merging the new account with the currently logged in user
   * Allow changing the Pseudonym#unique_id when registering a new
     account (since there might be conflicts)
   * Display a list of merge opportunities based on conflicting
     communication channels
     * Provide link(s) to log in as the other user,
       redirecting back to the registration page after login is
       complete (to complete the merge as the current user)
   * Remove several assert_* methods that are no longer needed
 * Update PseudonymSessionsController a bit to deal with the new
   way of dealing with conflicting CCs (especially CCs from LDAP),
   and to redirect back to the registration/confirmation page when
   attempting to do a merge
 * Expose the open_registration setting; use it to control if
   inviting users to a course is able to create new users

Change-Id: If2f38818a71af656854d3bf8431ddbf5dcb84691
Reviewed-on: https://gerrit.instructure.com/6149
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
2011-10-24 12:07:08 -06:00
Brian Palmer 60aa7baf5e add encoding magic comments to files with utf-8 chars
Change-Id: Ieba9245724da8aeeb816d7f178bb704b3dcda80f
Reviewed-on: https://gerrit.instructure.com/5832
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
2011-09-27 10:27:35 -06:00
JT Olds 76fed4b1e2 prevent users without permission from using the user list parsing feature
we don't want unauthorized gathering of real names from usernames

Change-Id: I01448d351c9672c32110fccdd5c9bf8750f820cf
Reviewed-on: https://gerrit.instructure.com/4594
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
2011-07-12 11:54:47 -06:00
JT Olds 98ffbbc83e allow enrollments through the UI with usernames
also adds enrollments in batches, instead of one at a time via ajax.

closes #4835

Change-Id: Ic2aac24db2c4d5fb4482901daf8627419c548e37
Reviewed-on: https://gerrit.instructure.com/4584
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2011-07-12 11:54:38 -06:00
JT Olds 45f0fbd370 renaming EmailList to UserList
Change-Id: I35d8f072ed19741baa8598e78813c00d0e54a28a
Reviewed-on: https://gerrit.instructure.com/4585
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
2011-07-12 11:54:30 -06:00