Skip to content
Snippets Groups Projects
  1. Apr 30, 2015
    • Jared Hancock's avatar
      role: Add role for thread entry editing · 13509d5b
      Jared Hancock authored
      The new role would like be assigned to power users and would all such users
      access to edit any post by any user.
      
      Agents can always edit their own posts, and department managers can edit all
      posts while the ticket is in the department they manage.
      13509d5b
    • Jared Hancock's avatar
      Add concept of thread editing · 5570feca
      Jared Hancock authored
      Threads can be edited by marking the original as hidden and setting it's PID to
      the id of the new entry. The new entry has cloned data from the original and
      sets the `updated` timestamp to reflect the time of last edit. An edited flag
      is added to the new entry to reflect its origin.
      
      This patch suggests that agents can edit their own posts, department managers
      can edit posts while the ticket is in their department, and that help desk
      admins can edit anything.
      
      If a post is edited more than once, only the most recent edit is kept.
      5570feca
  2. Apr 15, 2015
    • Jared Hancock's avatar
      custom-data: Address major confusion · 4efef017
      Jared Hancock authored
      This feature addresses a major issue with the initial implementation of the
      custom data system. The original system confused the usage of
      database-backed field (dynamic-fields) and their corresponding
      implementation. This created the need to crate awkward caching pieces to
      ensure that validation errors and data was maintained. Furthermore, the
      system confused the linking between form instances (dynamic-entry) and the
      form used to represent that entry.
      
      This patch addresses the confusion in two ways:
      
      Dynamic form entries do not link directly to the dynamic form. Instead, the
      ::getForm() method returns something from the forms API directly.
      Furthermore, the ::getFields() method does not return dynamic field
      instances (database backed / designed fields). Instead, the actual
      implementation of the fields from the forms API is retrieved. This allows
      the fields to *always* be cached, which helps preserve data and validation
      state.
      
      Secondly, the dynamic form uses the same system, so that requests to turn a
      dynamic form into a form (via ::getForm) will also result in the same
      behavior, again, where the fields are represented as forms API fields rather
      than the dynamic fields.
      
      So going forward, the dynamic fields are *only* used to create corresponding
      forms API field implementations. The are associated with the dynamic
      counterparts as sparingly as possible.
      4efef017
  3. Apr 14, 2015
  4. Apr 10, 2015
  5. Apr 07, 2015
  6. Apr 02, 2015
  7. Apr 01, 2015
  8. Mar 31, 2015
  9. Mar 24, 2015
  10. Mar 23, 2015
  11. Mar 18, 2015
  12. Mar 17, 2015
    • Jared Hancock's avatar
      search: Fix search on create date · 4d26f29f
      Jared Hancock authored
      This addresses the issue where the advanced search dialog was submitted
      before the date picker inputs were fixed up. This problem arises out of a
      difference between the agent's date formatting preference and the server
      being able to process that date format. The date pickers are reformated to
      yyyy-mm-dd before submission; however, for advanced search, the submission
      happened before the inputs were fixed up.
      
      This patch addresses the issue by manually fixing up the date in the
      submission routine for the advanced search dialog.
      4d26f29f
  13. Mar 12, 2015
  14. Mar 05, 2015
  15. Feb 27, 2015
  16. Feb 26, 2015
  17. Feb 18, 2015
  18. Feb 17, 2015
  19. Feb 13, 2015
  20. Feb 12, 2015
    • Jared Hancock's avatar
      Collaborators for threads, lock as a utility · 67d55198
      Jared Hancock authored
      This patch includes a slight database migration, and adjusts the
      functionality of a few core components.
      
        * Move collaborators from the ticket to the thread.
          This concept allows collaborators on any object which has a thread,
          including tasks.
      
        * Add flags to the thread entry
          This will allow flagging thread entries for different purposes.
          Initially this can be used to flag the original message of a thread in
          case a ticket / thread is created without an initial message.
      
        * Lock becomes more of a utility
          The lock is now disconnected from the ticket and is a separate utility.
          Separately, the ticket and task objects can have a reference to a lock
          object. Furthermore, when submitting some activities to tickets, the
          lock is verified to be owned by the respective agent, and the lock code
          must match a current lock code. The code is rotated on each acquire()
          call to guard against double submissions.
      
        * Collaborator is an ORM model
          The TicketUser class is broken up now so that the collaborator instance
          can exist apart from a ticket. Email message ids are now generated for
          collaborators without respect for a ticket so that collaborators can be
          properly supported on any thread.
      67d55198
  21. Feb 11, 2015
    • Jared Hancock's avatar
      login: Require CSRF token to login · 504831fe
      Jared Hancock authored
      This patch fixes a vulnerable scenario, where sequential login attempts can
      be made without an existing session, and without a valid CSRF token. This
      scenario lends itself well for brute force password attempts, because
      attackers can avoid using a session and still send requests to determine if
      a set of credentials are valid. This vector also avoids the authentication
      lockout mechanism, because it requires an ongoing session to shutdown the
      requests.
      
      This patch addresses the issue by requiring a session and a valid CSRF token
      generated by the server and placed in the session to be submitted with the
      credentials. Therefore, an existing session and a Cookie header are required
      to process a login attempt. Secondly, the CSRF token will be changed on the
      server after each login processed. Therefore, for each session, a subsequent
      GET request would be necessary before submitting another login attempt.
      504831fe
  22. Feb 06, 2015
  23. Jan 30, 2015
  24. Jan 23, 2015
Loading