Commit Graph

45 Commits

Author SHA1 Message Date
Zach Pendleton 126246bba5 respect course/account locale settings in notifications.
fixes #10690

previously, notifications only considered user locale settings
when translating; they now consider the context as well.

test plan:
  * create a course with a spanish or russian locale;
  * enroll an english user in the course;
  * verify that the enrollment email is sent in the course
    locale and not the user locale.

Change-Id: Ib942f35dff770ec02aa4e39880a5234e318f26a9
Reviewed-on: https://gerrit.instructure.com/14103
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
2012-10-08 13:17:10 -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
Cody Cutrer 65e4578659 allow disabling canvas auth for accounts with another auth source
disabling canvas auth also force-disables open registration, and
makes LDAP auth act like full delegated auth (CAS or SAML)

test plan:
 * configure LDAP, CAS, or SAML. MAKE SURE YOU CAN LOG IN.
 * go to account settings, and disable "Canvas Authentication"
 * open registration should no longer show up on account settings
   page (after saving)
 * ensure you can no longer log in with your Canvas credentials, but
   you can with LDAP, CAS, or SAML credentials.
 * remove LDAP, CAS, or SAML from the account
 * "Canvas Authentication" should no longer show up on the account
   settings page, open registration should
 * your Canvas credentials should start working again
 * add LDAP, CAS, or SAML back
 * "Canvas Authentication" should be back on in account settings

Change-Id: Ic7475623e5139bb545a87d8e5b1014dabaf4e854
Reviewed-on: https://gerrit.instructure.com/12850
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2012-08-16 13:09:23 -06:00
Cody Cutrer b7b407248f multi-factor authentication closes #9532
test plan:
 * enable optional MFA, and check the following:
   * normal log in should not be affected
   * you can enroll in MFA from your profile page
   * you can re-enroll in MFA from your profile page
   * you can disable MFA from your profile page
   * MFA can be reset by an admin on your user page
   * when enrolled, you are asked for verification code after
     username/password when logging in
   * you can't access any other part of the site directly until
     until entering your verification code
 * enable required MFA, and check the following
   * when not enrolled in MFA, and you log in, you are forced to
     enroll
   * you cannot disable MFA from your profile page
   * you can re-enroll in MFA from your profile page
   * an admin (other than himself) can reset MFA from the user page
 * for enrolling in MFA
   * use Google Authenticator and scan the QR code; you should have
     30-seconds or so of extra leeway to enter your code
   * having no SMS communication channels on your profile, the
     enrollment page should just have a form to add a new phone
   * having one or more SMS communication channels on your profile,
     the enrollment page should list them, or allow you to create
     a new one (and switch back)
   * having more than one SMS communication channel on your profile,
     the enrollment page should remember which one you have selected
     after you click "send"
   * an unconfirmed SMS channel should go to confirmed when it's used
     to enroll in MFA
   * you should not be able to go directly to /login/otp to enroll
     if you used "Remember me" token to log in
 * MFA login flow
   * if configured with SMS, it should send you an SMS after you
     put in your username/password; you should have about 5 minutes
     of leeway to put it in
   * if you don't check "remember computer" checkbox, you should have
     to enter a verification code each time you log in
   * if you do check it, you shouldn't have to enter your code
     anymore (for three days). it also shouldn't SMS you a
     verification code each time you log in
 * setting MFA to required for admins should make it required for
   admins, optional for other users
 * with MFA enabled, directly go to /login/otp after entering
   username/password but before entering a verification code; it
   should send you back to the main login page
 * if you enrolled via SMS, you should not be able to remove that
   SMS from your profile
 * there should not be a reset MFA link on a user page if they
   haven't enrolled
 * test a login or required enrollment sequence with CAS and/or SAML

Change-Id: I692de7405bf7ca023183e717930ee940ccf0d5e6
Reviewed-on: https://gerrit.instructure.com/12700
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-08-16 13:09:07 -06:00
Jon Jensen fc65cff7d6 don't require email validation on confirmation page, fixes #9591
since we have already "validated" the email (by virtue of them receiving
it and clicking on a link), we don't need to validate it here. fixes an
issue where users with non-email pseudonyms could not get past this page

also tweak form so that pseudonym can be specified if it needs to be set
(for example, the email was already taken by another user)

test plan:
1. as an admin create a new user with a login other than their email
   address
2. check the user's /messages URL to see the email that was sent to the
   user
3. copy and paste the URL that was sent in the email and navigate to it
4. the registration page should allow you to proceed and the label should
   say "Login"

Change-Id: I563b53b16b950bd7f6dafc456349db74fd97b294
Reviewed-on: https://gerrit.instructure.com/12569
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
2012-07-30 13:31:13 -06:00
Jon Jensen 716a74c91d new login page styles, fixes #9458
gets rid of the old green modal style. adds a new modal style (light gray)
and a login style (dark gray). a few form tweaks.

test plan:
1. confirm the login page works and looks correct
2. confirm the unauthorized page (e.g. /courses/1 when not logged in)
   works and looks correct
3. confirm the confirm registration page works and looks correct
4. confirm the course self-enrollment page works and looks correct
5. confirm the oauth2 confirm page works and looks correct

Change-Id: Ib9197693ec7b45349f25d69b9931bbae4c7ee831
Reviewed-on: https://gerrit.instructure.com/12246
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Shaw <ryan@instructure.com>
2012-07-18 16:12:00 -06:00
Jon Jensen d45870956f Merge remote-tracking branch 'origin/master' into dev/fft 2012-06-27 16:40:07 -06:00
Cody Cutrer 5ace1f46fe make sure cross-account logins go through the rate limiter stuff
fixes #7676

test plan:
 * get a site admin password wrong 11 times in a row from the same
   computer
 * it should error with "too many login attempts" for the next 5
   minutes

Change-Id: I7e63e3ecf76f1a7a638d8a43110e787ed08af795
Reviewed-on: https://gerrit.instructure.com/11828
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
2012-06-26 10:46:04 -06:00
Jon Jensen 1dac994b2d registration page and signup flows, closes #8676, #8806
test plan:
1. sign up as a teacher
2. sign up as a student with a course code
   1. confirm that you are auto-logged in as soon as you submit valid info
      in the form
3. sign up as a student without a course code
4. sign up as an observer
   1. confirm that you are auto-enrolled in the child's courses
5. test the log in form

Change-Id: I581de48095e85ca869b9ded101fe143ffadb9c9a
Reviewed-on: https://gerrit.instructure.com/11111
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
2012-06-05 21:18:37 -06:00
Jon Jensen 4a5ec4161a slight pseudonym auth refactor
moved some code into the model for easier reuse (e.g. observer
co-enrollmenent needs to be able to auth as the observed user)

test plan:
1. run PseudonymSessionController specs
2. they should pass

Change-Id: If6cafc99235f270909d2dd17d1912b1a51bb11bc
Reviewed-on: https://gerrit.instructure.com/11079
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2012-05-29 13:02:47 -06:00
Cody Cutrer 0c004fcf64 prepare for foreign keys refs #6895
* add the foreigner gem so plugins can begin adding foreign keys
   immediately
 * add an extension to do less locking when creating foreign keys
   on postgres 9.1+
 * fix a few pieces of code that either don't properly clean up
   foreign dependencies, or create objects in the wrong order
   to maintain referential integrity
 * change the specs to truncate all tables in a single command
   for postgres (to avoid referential integrity errors; also
   slightly faster)

test plan:
  * no user visible functionality should change

Change-Id: I185e478b99fbe598d408912053c34a064aa9c461
Reviewed-on: https://gerrit.instructure.com/10580
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-05-10 09:46:05 -06:00
Cody Cutrer dee14d0dda fully unrevert using trusted_account_ids closes #7167
test plan:
 * create a user in a non-default account
 * the user should no longer be able to log in at the default account

Change-Id: Ibf2ca15e6ae4d1da71b23648332862520be4358a
Reviewed-on: https://gerrit.instructure.com/8746
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-04-10 09:54:37 -06:00
Cody Cutrer ed5588147f use built-in authlogic password generation closes #8002
test plan:
 * create a new pseudonym without a password in script/console
 * after saving, pseudonym.password should return a value, and
   it should not start with "tmp-pw-"

Change-Id: Idb49ada75d0212fd068e09fbf4e77d837b25e9c4
Reviewed-on: https://gerrit.instructure.com/9778
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-04-02 16:42:56 -06:00
Brian Palmer 30de1a294e protect against timing out ldap servers, fixes #7461
If an LDAP server times out, log the time of failure to the
AccountAuthorizationConfig, and don't try to connect again until some
time passes.

test plan:
  * set up an account that uses LDAP, point it to localhost port 6767
  * run `nc -l 6767` or some other command to listen on that port, but
    not ever respond
  * attempt to log in on that account, the first log in should hang for
    5 seconds. subsequent logins should skip even trying to talk to
    ldap, until 1 minute passes.
  * change the account authorization config, verify that it tries the
    LDAP server again immediately

Change-Id: Iea5d7c27f72341d16ae370a0f6ad4ec90fb96b74
Reviewed-on: https://gerrit.instructure.com/9116
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Zach Wily <zach@instructure.com>
2012-03-02 14:14:10 -07:00
Zach Pendleton 05cabac7b3 fix creating user with no sis_user_id. fixes #6872
admin can now create user with no sis_user_id without receiving
an error about the sis id already existing.

also includes a migration to set all empty string sis_user_ids to
NULL.

test plan:
  * enable sis imports on an account;
  * as an admin in that account, create a new user, leaving the
    sis id blank;
  * create a second new user, also with a blank sis id;
  * verify that the second user is creating without any errors.

test plan:

Change-Id: Ia247c58e0070a4b02ecc584c18ed20bb5c05dcd3
Reviewed-on: https://gerrit.instructure.com/8665
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
2012-02-20 12:05:25 -07:00
Cody Cutrer 6a5f7f6878 temporary and deleted users have no account associations
fixes #7147

test plan:
 * enable open registration
 * invite a new user to a course
 * that user should not show up in the account's user list
 * finish registering the user
 * the user should now show up in the account's user list

Change-Id: I60790c213671a7c16a52082602725a2468ad2dc4
Reviewed-on: https://gerrit.instructure.com/8502
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
2012-02-08 14:37:17 -07:00
Cody Cutrer 4a51ad5279 add an extra implicit param to User#find_pseudonym_for_account and Pseudonym#works_for_account?
refs #6883

Use it when checking if a pseudonym is valid for authentication, but
not for if we need to create a new pseudonym for an account.  This
means that you can authenticate via an implicit trust relationship,
but when you are invited to something, it will still try and create
a pseudonym for you in that account.

test plan:
 * run existing specs (no behavior is changed without a plugin
   to define trust relationships)

Change-Id: Ieb200da27351c185e640e9c50ae1a6054e502c63
Reviewed-on: https://gerrit.instructure.com/8076
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
2012-01-23 12:41:19 -07:00
Cody Cutrer a81a4ea5c3 add data model validation that a pseudonym has an account and user
this is already true, just make sure it stays that way

test plan: n/a

Change-Id: Ia7340e8de57b18da509d51580b5827c7069af80a
Reviewed-on: https://gerrit.instructure.com/7166
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2012-01-13 16:25:51 -07:00
Cody Cutrer b9fee70ee6 use Pseudonym.custom_find_by_unique_id instead of find_by_unique_id
so that it's case insensitive

also fix some latent CommunicationChannel.find_or_initialize_by_path
discovered by specs for this

test plan:
 * run the specs
 * use forgot password with a username that differs in case
 * self-register a new user multiple times (without confirming)
   with e-mail addresses that differ in case

Change-Id: I476325f591c997fc8d50d5f38480177f732f07a7
Reviewed-on: https://gerrit.instructure.com/7724
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2012-01-04 15:58:40 -07:00
Cody Cutrer 2b2f49d66f search for communication channels case insensitively fixes #6750
test plan:
 * create a user via SIS import with an e-mail address
 * add a different e-mail address to the user
 * re-import the user via SIS, and set their e-mail address
   to the second e-mail you added, but with a different case
 * the user should have a single e-mail address, the one set
   in the second SIS import

Change-Id: Iab6b16e0b37cfb8caac3faa453be570b99621a9e
Reviewed-on: https://gerrit.instructure.com/7784
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
2011-12-30 19:36:29 -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 dd5ef48836 don't special case the default account to be "Instructure"
that's only true for Instructure, and not for hosted or open source
installations

test plan: n/a

Change-Id: I63c3c163fba410da758c4b0fe132332c0460abbc
Reviewed-on: https://gerrit.instructure.com/7009
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2011-11-28 12:50:46 -07:00
Brian Palmer 4ef50c16d8 make "stay logged in" use a one-time token
closes #6382

Previously, the "stay logged in" cookie just used the authlogic default
implementation, which is the pseudonym persistence_token. This is a
problem, because that persistence_token only ever changes when the
pseudonym password changes, so it's the same everywhere; so if that
cookie is stolen, it's valid for a very long time.

This switches us to one-time-use tokens that expire as soon as the token
logs the user in once. Each user agent also gets a different
one-time-use token.

Change-Id: I4f20cd7759fd74590e82ed55797552e342243d49
testplan:
  * Check that no token is set at all when "stay logged in" isn't
    selected.
  * Check "stay logged in", and verify:
    * That you don't have to login again after restarting your browser,
      but your _normandy_session got reset.
    * That if you save and try to replay using the same
      pseudonym_credentials, they don't work the second time.
    * That a second browser will get a different pseudonym_credentials
      value, and using one token doesn't affect the other.
    * That once the token is used, a new one is generated and set in
      your cookies. Verify this new token works as well.
    * That logging out removes the pseudonym_credentials cookie in your
      browser. And also that manually restoring this cookie still
      doesn't log you in, since it was removed server-side as well.
  * Change your password, and verify that the existing "stay logged in"
    tokens no longer work.
  * Delete your pseudonym, and verify the same.
Reviewed-on: https://gerrit.instructure.com/7093
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Zach Wily <zach@instructure.com>
2011-11-22 10:15:13 -07:00
Cody Cutrer d571046729 update account assocations when a pseudonym is deleted fixes #6215
testplan: delete all logins for an account from a user, and check
  their associations

Change-Id: I13939947e38525d4fe821cc991f622f5e117804c
Reviewed-on: https://gerrit.instructure.com/7001
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-11-16 09:02:44 -07:00
Cody Cutrer b7bf2ba3fb introduce a named scope for finding non-account-pseudonyms
refs #6199, #6177

makes it easier for a plugin to modify the logic. also removed dummy
method in Account that is never hooked into.

Change-Id: I87e2cad5172f6dece4448d61dc4681a94c44cecb
testplan: login
Reviewed-on: https://gerrit.instructure.com/6982
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-11-15 14:47:11 -07:00
Cody Cutrer 6b9c2ce003 only search for active pseudonyms when logging in fixes #6128
also fix searching all accounts to do so case insensitively

Change-Id: I3199f5ecd80d07e685c09c31bdffc96ef0f5371e
Reviewed-on: https://gerrit.instructure.com/6592
Reviewed-by: Zach Wily <zach@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-10-31 13:48:17 -06: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
Cody Cutrer d2a5328993 drop Pseudonym#sis_source_id closes #5897
Change-Id: I81f2df5324ae7f9747f5d72ac1f8686932c815ff
Reviewed-on: https://gerrit.instructure.com/6093
Reviewed-by: JT Olds <jt@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-10-12 12:18:37 -06:00
Cody Cutrer 966f196fc4 drop Pseudonym#deleted_unique_id closes #5896
Change-Id: I5072b341cebd0221d6b06bb74bb012c61b62610f
Reviewed-on: https://gerrit.instructure.com/6080
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2011-10-11 14:10:54 -06:00
Cody Cutrer 133f2a156a make Pseudonym#unique_id sis sticky refs #5897
Change-Id: If969d8bfd8844a2dcd5263a11c9bc06dcaa47c55
Reviewed-on: https://gerrit.instructure.com/6092
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2011-10-11 10:16:06 -06:00
Cody Cutrer 1697989a08 allow single character usernames fixes #5818
Change-Id: Ied53f5d44ec0a2ae38a4917af69bbc41eee90868
Reviewed-on: https://gerrit.instructure.com/5966
Reviewed-by: JT Olds <jt@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-10-03 14:41:41 -06:00
Cody Cutrer 801d9b2778 remove unused sis_data columns
Change-Id: I43ebd24cb76181b1dfb885d1ace5f89cb9b9978b
Reviewed-on: https://gerrit.instructure.com/5807
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2011-09-26 13:44:05 -06:00
Cody Cutrer 973b04c084 update_account_associations immediately for new objects
fixes #5359

Change-Id: I4f19c26939e38bb02c2e730629298c2a5937bce4
Reviewed-on: https://gerrit.instructure.com/5219
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: JT Olds <jt@instructure.com>
2011-09-14 15:41:55 -06:00
Cody Cutrer 7c77a68eb3 fail gracefully for invalid SSHA passwords
Change-Id: I66984bcfeeb64adeb3b1ac8567e8969bdb3058f3
Reviewed-on: https://gerrit.instructure.com/5440
Reviewed-by: JT Olds <jt@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-09-06 12:08:28 -06:00
Jacob Fugal 1a761c2d1f explicit utc db times in update_all
update_all's update hash doesn't have any magic performed on bare Time
objects; it assumes any Time object it's given is already in UTC. using
a TimeWithZone object (regardless of timezone), which Fixnum#ago and
friends happen to return, is still fine.

Change-Id: I297b2a3211b896b5225ebcfaaee3c1eb56e55fb6
Reviewed-on: https://gerrit.instructure.com/5351
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
2011-08-30 16:46:25 -06:00
tom metge ee8b8d95b8 don't crash when ldap can't be reached. fixes #5001
Change-Id: I473c565031593c1b7b3545851c1c79d77d588280
Reviewed-on: https://gerrit.instructure.com/4567
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-07-07 12:22:20 -06:00
Cody Cutrer 51bb2728ee i18n pseudonyms
Change-Id: I4a51381d92b6b047fbc8cda7a9d2f423b067a811
Reviewed-on: https://gerrit.instructure.com/4278
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-06-20 09:09:52 -06:00
Zach Wily 819bfe1dc6 support a secondary ldap configuration for account authorization; fixes #4776
Adds the ability for admins to configure a second LDAP server that will be
queried after the primary, assuming the user could not be found on the
primary. This is a slight refactor towards a more flexible authorization
configs model. Changes include:

  * changed the authorization relationship on Account to has_many
  * for backwards compat with all the code that assumes one config, added
    a convenience method to Account
  * refactored the auth config editing screen to send multiple configs at a
    time
  * modified the pseudonym to iterate over all the auth configs (when using
    ldap), stopping at the first one that succeeds

Change-Id: I6bae474f542e8c7046f07d4ab2c27e7d6f64a1ce
Reviewed-on: https://gerrit.instructure.com/4108
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-06-08 23:06:29 -06:00
Bracken Mosbacker e15cb0e085 added fields for editing sis_source_ids and new sis permission
closes #4475

Change-Id: Ie6da7ec45dcba65409c0909d180358a3796319dc
Reviewed-on: https://gerrit.instructure.com/3944
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
2011-05-31 17:53:46 -06:00
Cody Cutrer b60e645b0d import and support ssha passwords from sis. fixes #4573
Change-Id: I703730644f0094d7cb85d8def322969267de3ce5
Reviewed-on: https://gerrit.instructure.com/3755
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-05-23 08:40:35 -06:00
Brian Palmer b657f4e959 generate an error report for all errors, not just some of them
refs #4487

This consolidates our ErrorReport class with our ErrorLogging mechanism,
it's all in ErrorReport now and you call ErrorReport.log_error or
ErrorReport.log_exception to both create an ErrorReport object, and call
the hooks similar to what ErrorLogging did so that plugins for other
error handling mechanisms can be injected.

ErrorReport has a category field now, similar to how ErrorLogging used
to take a type. the /error_reports UI can filter by category.

The plugin interface was designed with Hoptoad integration in mind, but
it should be pretty general.

Change-Id: I59f7a0d44cf4b6215ad13ff92d30e1d1af607b74
Reviewed-on: https://gerrit.instructure.com/3577
Reviewed-by: Brian Palmer <brianp@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-05-11 10:36:56 -06:00
JT Olds 1b900f660e update existing sis communication channel instead of creating new ones. fixes #4538
Change-Id: Idf6e03ee14b2f93e4393a36229305dcdb3da14e8
Reviewed-on: https://gerrit.instructure.com/3585
Reviewed-by: Cody Cutrer <cody@instructure.com>
Reviewed-by: Zach Wily <zach@instructure.com>
Tested-by: Hudson <hudson@instructure.com>
2011-05-11 10:34:08 -06:00
Zach Wily 7beaf4d764 fix update_account_associations job getting created for every imported user
Change-Id: Ia7dc8ca3912510114d88035e264e59ebb54fe086
Reviewed-on: https://gerrit.instructure.com/3446
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-05-03 14:26:18 -06:00
Jon Jensen c6b7a45ad8 string validations/fixes, closes #4154. wiki fixes, closes #3973, #4168
proactively found and fixed varchar(255)'s where we relied on mysql's
silent truncation. added validations for places where we want to
enforce these limits

made it so you can reuse titles/urls of deleted wiki pages, and added
validations to ensure sane urls and prevent orphaned pages

Change-Id: I15bcc0c7a751efba1a0f7548e9989ad2ea1792bf
Reviewed-on: https://gerrit.instructure.com/2935
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Brian Palmer <brianp@instructure.com>
2011-04-05 11:22:50 -06:00
Brian Whitmer 8b8173dcc9 Initial commit.
closes #6988138
2011-01-31 18:57:29 -07:00