1. 29 Jun, 2019 1 commit
  2. 21 Jun, 2019 1 commit
    • ale's avatar
      Remove Database.CleartextPassword from the data model · 336cd671
      ale authored
      There's no reason for it to be exposed, it is currently an
      implementation detail in how new MySQL databases are created (the
      password reset flow for databases does not use it after that).
      336cd671
  3. 09 Jun, 2019 2 commits
  4. 03 Apr, 2019 1 commit
  5. 21 Mar, 2019 2 commits
  6. 09 Feb, 2019 1 commit
  7. 18 Nov, 2018 1 commit
  8. 17 Nov, 2018 1 commit
    • ale's avatar
      Switch to really opaque ResourceIDs · 78d08eef
      ale authored
      The new ResourceID is really a database ID (in our case, a LDAP DN),
      and we have completely decoupled other request attributes like type
      and owner from it.
      
      Resource ownership checks are now delegated to the backend.
      
      Also change the backend CreateResource call to CreateResources, taking
      multiple resources at once, so we can perform user-level resource
      validation, and simplify the CreateUser code path.
      78d08eef
  9. 16 Nov, 2018 1 commit
    • ale's avatar
      Add shard and status to the User type · c5d3b1a5
      ale authored
      The shard is kept in sync with the email resource shard. CreateUser
      validation enforces a single email resource per account.
      c5d3b1a5
  10. 14 Nov, 2018 1 commit
  11. 12 Nov, 2018 1 commit
  12. 09 Nov, 2018 3 commits
    • ale's avatar
      Rename PasswordRecovery to AccountRecovery · ec82ed43
      ale authored
      Referring to the account is clearer. Also add account recovery
      integration tests, and a test fixture with encryption keys.
      ec82ed43
    • ale's avatar
      Move code around to improve readability · 28476a76
      ale authored
      28476a76
    • ale's avatar
      First stage of refactor targeting simplicity · 4e34034b
      ale authored
      Structure flow around requests themselves and composition rather than
      handlers and wrappers, the results are likely more readable (and
      shorter).
      
      Move all the user auth management business logic to a smart RawUser
      object, to separate it from details of API handling. The result should
      be more understandable: all critical changes are contained within a
      single type.
      
      Also, with all the workflow driven by Requests, we can get rid of the
      boilerplate in the HTTP API server and replace it with a tiny tiny
      layer of reflection.
      4e34034b
  13. 01 Nov, 2018 2 commits
    • ale's avatar
      Fix nil dereference · 6f16cef4
      ale authored
      Forgot to initialize the wrapped u2f.Registration.
      6f16cef4
    • ale's avatar
      Use a custom u2f.Registration wrapper type that serializes to JSON · 50f6eaa4
      ale authored
      Establish a standardized serialization format for u2f registration
      keys: base64-encoded raw registration data, encoded as a JSON
      string. This format decodes transparently to a Go []byte slice, but it
      needs explicit base64 decoding in Python.
      50f6eaa4
  14. 17 Aug, 2018 1 commit
  15. 26 Jul, 2018 1 commit
    • ale's avatar
      Add an explicit Type field to Resources · da871e97
      ale authored
      The type is already encoded in the resource ID, but this is handy for
      API clients so that they do not need to parse resource IDs.
      da871e97
  16. 01 Jul, 2018 2 commits
  17. 30 Jun, 2018 1 commit
  18. 25 Jun, 2018 1 commit
  19. 24 Jun, 2018 1 commit
    • ale's avatar
      Implement user-level resource validation · e8b91a57
      ale authored
      By adding a User to the resource validation context, we can implement
      more complex checks like verifying that websites have an associated
      DAV account, or that the parent resource of a database is actually a
      website.
      e8b91a57
  20. 23 Jun, 2018 1 commit
  21. 22 Jun, 2018 1 commit
    • ale's avatar
      Add integration tests · aef048c2
      ale authored
      Start a full HTTP server, backed by an in-memory LDAP server, and test
      the API directly.
      aef048c2
  22. 21 Jun, 2018 1 commit
  23. 20 Jun, 2018 2 commits
    • ale's avatar
      Plug validators back in · a0c1b63b
      ale authored
      The new Backend/TX split makes it a bit harder to test the validators,
      but do so anyway.
      a0c1b63b
    • ale's avatar
      Refactor the LDAP backend · 02d7c9c6
      ale authored
      Use a lower level type to abstract LDAP "transactions" (really just
      batches of changes) and generate a set of ModifyRequest objects at
      commit time. Change the API to let the caller manage the
      transaction (TX object) lifetime.
      02d7c9c6
  24. 19 Jun, 2018 1 commit
    • ale's avatar
      Implement a transaction-like interface for the backend · ac2aa256
      ale authored
      This should make it easier to implement a SQL backend in the future if
      necessary, even though LDAP knows no such thing as transactions.
      
      As a result of a better low-level interface, reducing the boilerplate
      LDAP code, the business logic in model.go should be quite more
      readable.
      ac2aa256
  25. 01 Apr, 2018 2 commits
  26. 20 Mar, 2018 1 commit
  27. 18 Mar, 2018 1 commit