1. 30 Mar, 2017 1 commit
  2. 08 Nov, 2016 1 commit
  3. 20 Jul, 2016 1 commit
  4. 26 May, 2016 1 commit
  5. 24 May, 2016 1 commit
  6. 20 Jan, 2016 1 commit
  7. 12 Jan, 2016 1 commit
  8. 10 Dec, 2015 1 commit
  9. 04 Dec, 2015 1 commit
  10. 06 Oct, 2015 1 commit
  11. 05 Oct, 2015 1 commit
  12. 31 Aug, 2015 1 commit
  13. 20 Aug, 2015 1 commit
  14. 19 Aug, 2015 4 commits
    • Robin McCorkell's avatar
      Unit tests for new backend API · c5726310
      Robin McCorkell authored
      c5726310
    • Robin McCorkell's avatar
      Split backend identifiers from the class name · 1eeca031
      Robin McCorkell authored
      Prior to this, the storage class name was stored in mount.json under the
      "class" parameter, and the auth mechanism class name under the
      "authMechanism" parameter. This decouples the class name from the
      identifier used to retrieve the backend or auth mechanism.
      
      Now, backends/auth mechanisms have a unique identifier, which is saved in
      the "backend" or "authMechanism" parameter in mount.json respectively.
      An identifier is considered unique for the object it references, but the
      underlying class may change (e.g. files_external gets pulled into core
      and namespaces are modified).
      1eeca031
    • Robin McCorkell's avatar
      Authentication mechanisms for external storage backends · 272a46eb
      Robin McCorkell authored
      A backend can now specify generic authentication schemes that it
      supports, instead of specifying the parameters for its authentication
      method directly. This allows multiple authentication mechanisms to be
      implemented for a single scheme, providing altered functionality.
      
      This commit introduces the backend framework for this feature, and so at
      this point the UI will be broken as the frontend does not specify the
      required information.
      
      Terminology:
       - authentication scheme
          Parameter interface for the authentication method. A backend
          supporting the 'password' scheme accepts two parameters, 'user' and
          'password'.
       - authentication mechanism
          Specific mechanism implementing a scheme. Basic mechanisms may
          forward configuration options directly to the backend, more advanced
          ones may lookup parameters or retrieve them from the session
      
      New dropdown selector for external storage configurations to select the
      authentication mechanism to be used.
      
      Authentication mechanisms can have visibilities, just like backends.
      The API was extended too to make it easier to add/remove visibilities.
      In addition, the concept of 'allowed visibility' has been introduced, so
      a backend/auth mechanism can force a maximum visibility level (e.g.
      Local storage type) that cannot be overridden by configuration in the
      web UI.
      
      An authentication mechanism is a fully instantiated implementation. This
      allows an implementation to have dependencies injected into it, e.g. an
      \OCP\IDB for database operations.
      
      When a StorageConfig is being prepared for mounting, the authentication
      mechanism implementation has manipulateStorage() called,
      which inserts the relevant authentication method options into the
      storage ready for mounting.
      272a46eb
    • Robin McCorkell's avatar
      Introduce BackendService for managing external storage backends · 37beb58c
      Robin McCorkell authored
      Backends are registered to the BackendService through new data
      structures:
      
      Backends are concrete classes, deriving from
      \OCA\Files_External\Lib\Backend\Backend. During construction, the
      various configuration parameters of the Backend can be set, in a design
      similar to Symfony Console.
      
      DefinitionParameter stores a parameter configuration for an external
      storage: name of parameter, human-readable name, type of parameter
      (text, password, hidden, checkbox), flags (optional or not).
      
      Storages in the StoragesController now get their parameters validated
      server-side (fixes a TODO).
      37beb58c
  15. 26 Mar, 2015 1 commit
  16. 16 Mar, 2015 1 commit
    • Vincent Petry's avatar
      Generate storage config ids when missing · 72632ad4
      Vincent Petry authored
      When reading in old mount.json files, they do not contain config ids.
      Since these are needed to be able to use the UI and the new service
      classes, these will be generated automatically.
      
      The config grouping is based on a config hash.
      72632ad4
  17. 13 Mar, 2015 1 commit
  18. 12 Mar, 2015 1 commit
    • Vincent Petry's avatar
      Use storage id + appframework for ext storage CRUD · ce94a998
      Vincent Petry authored
      - Added StorageConfig class to replace ugly arrays
      - Implemented StorageService and StorageController for Global and User
        storages
      - Async status checking for storages (from Xenopathic)
      - Auto-generate id for external storage configs (not the same as
        storage_id)
      - Refactor JS classes for external storage settings, this mostly
        moves/encapsulated existing global event handlers into the
        MountConfigListView class.
      - Added some JS unit tests for the external storage UI
      ce94a998