This project is mirrored from https://github.com/metabase/metabase.
Pull mirroring updated .
- Oct 12, 2022
-
-
Noah Moss authored
* fix serialization test by not hardcoding tmp directory * clean imports * cleanup * change approach
-
- Oct 07, 2022
-
-
metamben authored
* Implement per group and per db app permissions
-
Braden Shepherdson authored
The value is reconstructed on the deserialization side based on the time of deserialization. For the git workflow, `updated_at` makes for a lot of diffs of unrelated files.
-
- Oct 04, 2022
-
-
Alexander Polyankin authored
-
- Sep 30, 2022
-
-
Nemanja Glumac authored
* Remove unused `underscore` imports from `.ts` files * Remove unused `underscore` imports from `.tsx` files * Remove unused `underscore` imports from `.jsx` files * Remove unused `underscore` imports from `.js` files
-
- Sep 29, 2022
-
-
Cam Saul authored
* Reset changes and go thru everything again to make sure it makes sense * Test fixes
-
Cam Saul authored
* `POST /api.ee/serialization/serialize/data-model` endpoint * Sort namespaces * Don't use `tru` for endpoint params validation
-
Alexander Polyankin authored
-
- Sep 28, 2022
-
-
Alexander Polyankin authored
-
- Sep 27, 2022
-
-
Jeff Bruemmer authored
-
- Sep 26, 2022
-
-
metamben authored
* Implement DB specific execution permissions Separate execution permissions from data permissions as a new dimension like application features. Create a new endpoint for getting and setting these permissions.
-
Nemanja Glumac authored
-
dpsutton authored
* Substitute persisted queries in parameter card references ```sql select o.total, o.quantity, model_p.category, model_p.title from orders o left join {{#14-pg-products}} model_p -- reference to products model on o.product_id = model_p.id limit 4 ``` Testing: I'm unhappy with how verbose the test is. At some point we're going to need a better, standardized way to test persistence. But the test makes a persisted table of the test-data.categories table (test/metabase/test/data/dataset_definitions/test-data.edn). It runs some sql to update the values in the table to turn `"Winery"` -> `"Winery from cached table"`, joins the two tables together to have both at once. There's a lot of moving pieces and the setup is a bit verbose. There's also no obvious place where these types of tests should go. We'll need to consolidate them in the future (and extend them). * persisted macro * docstring for `persisted-info-native-query` * alignments and small nits * Reuse persistence macro * clj-kondo cleanups * remove clj-kondo change before rebase
-
- Sep 23, 2022
-
-
metamben authored
* Introduce /execution/ permission
-
- Sep 22, 2022
-
-
Cam Saul authored
* 347 errors, 34 warnings * 89 errors, 66 warnings * 63 errors, 39 warnings * 52 errors, 33 warnings * 23 errors, 22 warnings * 13 errors, 4 warnings * Fix the last few errors. * Sort Kondo config
-
Noah Moss authored
* wip changes * new endpoint * fix test * more test fixes * add test for EE settings permissions * try to fix another BE test * address ngoc's comment * fix cypress test * fix another cypress test to hit new settings endpoint
-
- Sep 19, 2022
-
-
dpsutton authored
* Don't use persisted model tables for segmented users This actually isn't a bug, but due to very subtle and arbitrary reasons. For background about why we need to ensure this never happens, we cannot use persisted models when sandboxing is at play. A simple example is as follows: make a model on a products table that does not select the category. Have a sandbox on category such that someone can only see products of category "Gizmo". the model lacks the category column but we insert a where clause that still works. When the model is persisted, there is no category column in the underlying table so sandboxing cannot possibly work: the data necessary to filter is no longer associated with the rest of the data in the model. The fix for this is quite simple: in `metabase.query-processor.middleware.fetch-source-query` we only splice in the persisted query if the user is not a segmented user (product name for sandboxing). ```clojure (and persisted-info/*allow-persisted-substitution* (not (segmented-user?)) ;; <----- new check (:active card) (:definition card) (:query_hash card) (= (:query_hash card) (persisted-info/query-hash (:dataset_query card))) (= (:definition card) (persisted-info/metadata->definition (:result_metadata card) (:table_name card))) (= (:state card) "persisted")) ``` Technical details about why this bug did not manifest When swapping out a card__<id> to a source query, if its a model we will see if it is persisted, and if so, we will use the native sql to select from the persisted table. It does this by adding the native sql at a key called `:persisted-info/native` and a middleware `#'qp.persistence/substitute-persisted-query` walks the query replacing the query with the native: ```clojure ;; metabase.query-processor.middleware.persistence (mbql.u/replace query (x :guard (every-pred map? :persisted-info/native)) {:native (:persisted-info/native x)}) ``` There is also a middleware that walks through the query looking for tables with gtaps on them and replacing them. By change, the sandboxing middleware runs immediately before the substitute-persisted middleware! ```clojure ;; literally the previous middleware (resolve 'ee.sandbox.rows/apply-sandboxing) #'qp.persistence/substitute-persisted-query ``` If you swap the order of these two sandboxing is broken. As is, it "works" but not by design, just by happenstance. The sandboxing middleware just did not know that the `:persisted-info/native` key meant that a native query was to be substituted. In the reverse order, the native query is already substituted and there is no change for the sandboxing to occur. The obvious fix is to ensure that we never even attempt to use the persisted tables and that is what this PR does. * Eastwood doesn't like shadowing like this * Rearrange check order for tests `segmented-user?` throws if there is no bound user. A test in `fetch-source-query-test` was failing because there was no user bound, but it wasn't attempting to swap out a persisted table, it just didn't expect to need a user. Moving it lower lets it short circuit on other bits that are bound to fail (definition, query_hash, etc) requiring persistence before we check for a bound user
-
Noah Moss authored
* first pass at LDAP setup improvements * fix lint errors * fix LDAP api tests * WIP test for new setting setter * fix setting test * set ldap-enabled to true in ldap server macro * try to fix java11 tests * Update src/metabase/integrations/ldap.clj Co-authored-by:
metamben <103100869+metamben@users.noreply.github.com> * add transaction * remove ldap-ever-enabled? setting and revert some of the logic that is no longer necessary * set ldap-enabled via the ldap api and add tests * fix tests and lint * fix error on settings save * fix cypress test * actually fix cypress Co-authored-by:
metamben <103100869+metamben@users.noreply.github.com>
-
- Sep 15, 2022
-
-
Braden Shepherdson authored
Cards can depend on other Cards as their `:source-table`, but the code to extract `serdes-dependencies` from the MBQL query did not capture that case.
-
Braden Shepherdson authored
Many entities have `creator_id` and similar fields. `User`s are not serialized. Foreign keys to users are serialized as email addresses. During deserialization in a different instance (eg. a local dev instance importing a dump from a prod instance) many such users may not exist. This change creates new `User` entities on the fly with empty names, generated passwords, and the email set.
-
- Sep 14, 2022
-
-
Braden Shepherdson authored
The YAML file names have an optional `:label` portion that becomes the latter part of the filename. Reconstructed paths (eg. from `serdes-dependencies`) don't have those labels. This change makes the YAML ingestion code able to find a file with a human-readable label even if the request didn't include it. No ambiguity results because the file names are always based on the unique serdes `:id`, usually an `entity_id`.
-
Braden Shepherdson authored
- Limit the scanning of directories and files to those named after models; don't try to ingest `.git`, `README.md`, etc. - `table_id` and `collection_id` are optional on Cards - Deserialization was not resolving some deeply nested `:field`s inside MBQL queries.
-
Braden Shepherdson authored
Pass `--collections 123,456,789` to dump only these collections and their transitive `serdes-descendants`.
-
- Sep 12, 2022
-
-
Ryan Laurie authored
* enforce import order * reorder all imports * more import updates
-
- Sep 06, 2022
-
-
Cam Saul authored
* Rename DashboardCard `sizeX` and `sizeY` to `size_x` and `size_y` (#16344) * Fix migration * Fix MySQL/MariaDB
-
- Aug 31, 2022
-
-
Braden Shepherdson authored
This is a simple expedient: convert our entities to a `(sorted-map)` before passing them to the YAML writer! This gives a consistent, platform-agnostic order between dumps. (It might have already been fine, since it's based on Clojure's `hash`?)
-
Braden Shepherdson authored
* Add `serdes-descendants` for "containment" to serialize a subtree This allows naming eg. a Collection and will recursively serialize: all dashboards, cards and dashcards it contains directly, plus all child collections and everything they contain. Currently this words on Collection, Dashboard, DashboardCard, and Card. * lint * Switch to plural `extract-subtrees` with a list of `targets`
-
Ngoc Khuat authored
* use login-attributes when hash advanced field-values if sandbox use native query * add a e2e test * Add repro for #24966 Co-authored-by:
Nemanja <31325167+nemanjaglumac@users.noreply.github.com>
-
- Aug 29, 2022
-
-
Noah Moss authored
* minor comment fixes * fix error * unskip cypress * remove debugging code * retrigger ci * throw an exception when a recursion limit is hit
-
- Aug 23, 2022
-
-
Cam Saul authored
* [Toucan 2 prep] Don't invoke Toucan models as functions * Some fixes * Test fixes * Test fix * [Toucan 2 prep] Don't call `type` or `class` on Toucan models * Test fixes * More test fixes
* Replace perms protocol with multimethods; derive models from perms policy keywords * Test fixes * Appease Eastwood * Fix errors now that App has been merged in * Empty commit to trigger CI
-
- Aug 22, 2022
-
-
Cam Saul authored
* [Toucan 2 prep] Don't invoke Toucan models as functions * Some fixes * Test fixes * Test fix * [Toucan 2 prep] Don't call `type` or `class` on Toucan models * Test fixes * More test fixes
-
Cam Saul authored
* [Toucan 2 prep] Don't invoke Toucan models as functions * Some fixes * Test fixes
-
Braden Shepherdson authored
FieldValues can be rebuilt by the sync process, but they are portable and including them aids in the plans for content moderation via git.
-
- Aug 19, 2022
-
-
Braden Shepherdson authored
-
- Aug 18, 2022
-
-
Jeff Bruemmer authored
-
- Aug 17, 2022
-
-
Cal Herries authored
* Separate setting the timeout cookie's expires attribute from the session cookie's max-age * Add back public-settings/session-cookies tests and add docstrings * Fix setting cookies with full-app-embedding * Add docstring * Change logout to always delete the session * Remove extra code * Change session-cookie-name from multimethod to simple case expression * Refactor: move use-permanent-cookies? closer to usage * Fix FE unit test
-
- Aug 16, 2022
-
-
Ngoc Khuat authored
* fix incorrectly hash a fieldvalues for field that is not the field we use to define sandbox rule * appease clj-kondo * make the doc clearer * remove the _id destructring
-
- Aug 15, 2022
-
-
Alexander Polyankin authored
Revert "Fix #23689: Sandboxed group managers can't see other users in the People tab (#23825)" (#24760)
-
- Aug 12, 2022
-
-
Cam Saul authored
* Fix some small things * Add Kondo to deps.edn to be able to debug custom hooks from REPL * Fix macroexpansion hook for with-temp* without values * Test config (WIP) * More misc fixes * Disable :inline-def for tests * More misc fixes * Fix $ids and mbql-query kondo hooks. * Fix with-temporary-setting-values with namespaced symbols * More misc fixes * Fix the rest of the easy ones * Fix hook for mt/dataset * Horrible hack to work around https://github.com/clj-kondo/clj-kondo/issues/1773 . Custom linter for mbql-query macro * Fix places calling mbql-query with a keyword table name * Fix the last few errors in test/ * Fix errors in enterprise/test and shared/test * Fix driver test errors * Enable linters on CI * Enable unresolved-namespace linter for tests * Appease the namespace linter again * Test fixes * Enable unused-binding linter for test/ => 293 warnings * 259 warnings * 234 warnings * => 114 warnings * Fix the rest of the unused binding warnings in test/ * Fix unused binding errors in enterprise/backend/test * Fix unused binding lint errors in driver tests * Test fix
* Assure Kondo that something is in fact used -
Cam Saul authored
* Fix some small things * Add Kondo to deps.edn to be able to debug custom hooks from REPL * Fix macroexpansion hook for with-temp* without values * Test config (WIP) * More misc fixes * Disable :inline-def for tests * More misc fixes * Fix $ids and mbql-query kondo hooks. * Fix with-temporary-setting-values with namespaced symbols * More misc fixes * Fix the rest of the easy ones * Fix hook for mt/dataset * Horrible hack to work around https://github.com/clj-kondo/clj-kondo/issues/1773 . Custom linter for mbql-query macro * Fix places calling mbql-query with a keyword table name * Fix the last few errors in test/ * Fix errors in enterprise/test and shared/test * Fix driver test errors * Enable linters on CI * Enable unresolved-namespace linter for tests * Appease the namespace linter again * Test fixes
-