Skip to content
Snippets Groups Projects
  1. Dec 06, 2023
    • Egor Ivkov's avatar
      fix: set default value of max login attempts to 4 · 2be3aecf
      Egor Ivkov authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      2be3aecf
    • Yaroslav Dynnikov's avatar
      test: access control user story · 28d3d223
      Yaroslav Dynnikov authored and Yaroslav Dynnikov's avatar Yaroslav Dynnikov committed
      Tested scenarios:
      
      1. Alice is granted a privilege to create global/sharded table
      2. Alice can create, read, and write it
      3. Bob can't read it
      4. Alice grants Bob a privilege to read it
      5. Now Bob can read it, but he still can't write
      28d3d223
    • Kurdakov Alexander's avatar
      refactor: remove all privileges from role super · 45ba7392
      Kurdakov Alexander authored and Alexander Kurdakov's avatar Alexander Kurdakov committed
      45ba7392
    • Dmitry Ivanov's avatar
      feat(audit): don't print None values · 2e035654
      Dmitry Ivanov authored
      This patch adds a proper support for auxiliary fields containing `Option<T>`.
      As of now, KV pairs containing `Some(x)` will be printed as just `x`,
      while the ones with `None` won't be printed at all.
      
      Example:
      
      ```rust
      crate::audit!(
          message: "demo audit event",
          title: "example",
          severity: Low,
          test: Some(0u32),
      );
      ```
      
      ```json
      {
        "id": "1.0.1",
        "message": "demo audit event",
        "severity": "low",
        "time": "2023-12-06T17:16:51.085+0300",
        "title": "example",
        "test": "0"
      }
      ```
      
      ```rust
      crate::audit!(
          message: "demo audit event",
          title: "example",
          severity: Low,
          test: None::<i32>,
      );
      ```
      
      ```json
      {
        "id": "1.0.1",
        "message": "demo audit event",
        "severity": "low",
        "time": "2023-12-06T17:16:51.085+0300",
        "title": "example"
      }
      ```
      2e035654
  2. Dec 04, 2023
  3. Dec 03, 2023
  4. Dec 01, 2023
  5. Nov 29, 2023
    • Kurdakov Alexander's avatar
      0c96fceb
    • Dmitry Ivanov's avatar
      feat(audit): implement composite record id · 1340f8a3
      Dmitry Ivanov authored
      Logically, the record id consists of 3 fields:
      * `raft_id` -- raft id of the current node (or `null` if uninitialized);
      * `count` -- in-memory id which is auto incremented for each new record;
      * `gen` -- persistent id which is incremented each time node is started.
      
      However, in practice they are stored inside a global `LogicalClock`.
      
      This is what the record looks like now:
      
      ```json
      {
        "id": "1.0.3",
        "instance_id": "i1",
        "message": "a new instance `i1` joined the cluster",
        "raft_id": "1",
        "severity": "low",
        "time": "2023-11-29T17:07:36.524+0300",
        "title": "join_instance"
      }
      ```
      
      Note how those fields are concatenated using `.`; the resulting
      unique id is represented by a json string type.
      
      Furthermore, since audit record logger now depends on the
      raft machine's state, we decided to move its initialization
      further into the init sequence (postjoin).
      1340f8a3
  6. Nov 28, 2023
  7. Nov 27, 2023
Loading