Skip to content
Snippets Groups Projects
  1. Dec 19, 2023
  2. Dec 07, 2023
  3. 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
  4. Dec 04, 2023
  5. Dec 03, 2023
  6. Dec 01, 2023
  7. 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
Loading