Skip to content
Snippets Groups Projects
  1. Aug 27, 2022
  2. Aug 22, 2022
    • Julian's avatar
      Introduce ServiceUser · 6337c591
      Julian authored
      Preperation for future features that require per-service user settings
      or state, e.g. stateful sync or service-specific email settings.
      
      The additional JOIN of ServiceUser degrades getusers API performance
      by 30-50%. For API calls that return many users, this is compensated by
      an otherwise unrelated optimization (selectinload instead of joinedload).
      6337c591
  3. Aug 19, 2022
    • Julian's avatar
      Use UTC internally · ffcec8a4
      Julian authored
      Convert DateTime fields to UTC, use "utcnow" instead of "now" and use
      babel helper/filter when dates/times are displayed or parsed from user
      input.
      
      Uffd continues to use the system's timezone in the user interface by
      default.  However, it is now possible to overwrite this with the
      BABEL_DEFAULT_TIMEZONE config option.
      ffcec8a4
  4. Aug 15, 2022
    • Julian's avatar
      Cleanup CI tests and LDAP remnants · 3f82ec74
      Julian authored
      Unittest jobs now fail if any test fails. Unittests on Bullseye no longer
      fail due to jinja2 import errors. Linter jobs run faster.
      3f82ec74
    • Julian's avatar
      Restructure source tree · ac731bf4
      Julian authored
      Move all models, views, cli commands and templates into corresponding
      top-level folders. Detailed changes:
      
      - uffd/<NAME>/models.py -> uffd/models/<NAME>.py
      - uffd/<NAME>/cli.py -> uffd/commands/<NAME>.py
      - uffd/<NAME>/views.py -> uffd/views/<NAME>.py
      - uffd/<NAME>/templates/* -> uffd/templates/
      - uffd/ratelimit.py -> uffd/models/ratelimit.py (it contains models)
      - gendevcert from uffd/__init__.py -> uffd/commands/gendevcert.py
      - profile from uffd/__init__.py -> uffd/commands/profile.py
      - cleanup from uffd/tasks.py -> uffd/commands/cleanup.py
      - roles-update-all from uffd/role/views.py -> uffd/commands/...
      - Views from uffd/__init__.py -> uffd/views/__init__.py
      - All models can/should be imported from uffd.models
      - flask shell auto-imports all models instead of only a few
      
      The old structure was meant to keep the code modular and related
      code/resources close to each other. However, the modules turned out to
      be heavily interdependent and not very modular. Also importing was fragile
      due to ordering issues.
      
      With the new structure the dependency tree is much simpler: Infrastructure
      code (top-level *.py files) has no internal dependencies. Models only
      depend on infrastructure and other models. Views and cli commands depend
      on infrastructure, models and other views/commands.
      
      Going forward there is still some restructuring to do, e.g.:
      
      - Move mfa setup views to selfservice views
      - Move mfa auth views to session views
      - Move utility code from views to infrastructure (e.g. login_required)
      - In most cases views should not need to import from other views
      - Reorganize infrastructure code
      ac731bf4
  5. Aug 14, 2022
  6. Jul 19, 2022
  7. Jun 27, 2022
  8. Jun 21, 2022
  9. Jun 15, 2022
  10. May 24, 2022
  11. Apr 25, 2022
    • Julian's avatar
      Remailer support · 10e37c17
      Julian authored
      With this feature, uffd can be configured to hide mail addresses of users
      from certain services while still allowing the services to send mails to the
      users.
      
      To these services uffd returns special remailer addresses instead of the real
      mail addresses. When a service sends an email to a remailer address the mail
      server queries uffd's API and replaces the remailer address with the real mail
      address in both envelope and headers.
      
      This feature requires additional mail server configuration (Postfix
      canonical_maps) and support in uffd-socketmapd.
      10e37c17
  12. Apr 22, 2022
  13. Apr 20, 2022
    • Julian's avatar
      Fix "new invite" form resetting on error · bfd759bd
      Julian authored
      When the "new invite" page was submitted with e.g. an invalid "Valid Until"
      value, uffd displayed an error and reset the whole form. This was confusing
      to users.
      
      Now the form content is preserved on errors. Also the "Valid Until" field now
      has min/max attributes to prevent submitting the form with invalid values.
      
      Fixes #134
      bfd759bd
  14. Apr 02, 2022
  15. Mar 29, 2022
  16. Mar 28, 2022
  17. Mar 24, 2022
  18. Mar 23, 2022
  19. Mar 22, 2022
  20. Feb 28, 2022
    • Julian's avatar
    • Julian's avatar
      Fix regression in service overview access behavior · 3880be9a
      Julian authored
      When the service overview was introduced, it was meant to be optional. Thus
      if the SERVICES config option was empty (the default), uffd returned 404.
      
      Commit fa67bde0 (Migrate OAuth2 and API clients to database) introduced the
      regression that accessing the service overview page when no services are
      visible based on the permissions of the current user (or guest if not logged
      in), 404 is returned.
      
      This change fixes the regression and further changes the behavior to improve
      consistency. Since fa67bde0, the page is relevant to admin users regardless of
      the SERVICES config option. Therefore uffd asks for login or reports missing
      permissions in all cases it originally returned 404.
      3880be9a
  21. Feb 27, 2022
  22. Feb 25, 2022
  23. Feb 24, 2022
    • Julian's avatar
      Migrate OAuth2 and API clients to database · fa67bde0
      Julian authored
      Also adds a shallow Service model that coexists with the config-defined
      services to group multiple OAuth2 and API clients together.
      
      Clients defined in the config with OAUTH2_CLIENTS and API_CLIENTS_2 are
      imported by the database migrations.
      
      Removes support for complex values for the OAuth2 client group_required option.
      Only simple group names are supported, not (nested) lists of groups previously
      interpreted as AND/OR conjunctions. Also removes support for the login_message
      parameter of OAuth2 clients.
      fa67bde0
  24. Feb 17, 2022
    • Julian's avatar
      Refactor Unix UID/GID generation · 66df931d
      Julian authored
      The generation now happens in a subquery inside the INSERT statement instead
      of separate client-managed query. This should also reduce the risk of race
      conditions.
      
      Service and non-service users may now use the same UID range.
      66df931d
  25. Feb 16, 2022
  26. Feb 14, 2022
  27. Feb 13, 2022
Loading