|
57 | 57 | sync_with_all_node_monitors/0, |
58 | 58 | new_key_id/0, |
59 | 59 | is_valid_key_id/1, |
60 | | - dek_drop_complete/1]). |
| 60 | + dek_drop_complete/1, |
| 61 | + is_name_unique/3]). |
61 | 62 |
|
62 | 63 | %% gen_server callbacks |
63 | 64 | -export([init/1, handle_call/3, handle_cast/2, handle_info/2, |
@@ -402,6 +403,12 @@ dek_drop_complete(DekKind) -> |
402 | 403 | ?MODULE ! {dek_drop_complete, DekKind}, |
403 | 404 | ok. |
404 | 405 |
|
| 406 | +-spec is_name_unique(secret_id(), string(), chronicle_snapshot()) -> boolean(). |
| 407 | +is_name_unique(Id, Name, Snapshot) -> |
| 408 | + lists:all(fun (#{id := Id2}) when Id == Id2 -> true; |
| 409 | + (#{name := Name2}) -> Name /= Name2 |
| 410 | + end, get_all(Snapshot)). |
| 411 | + |
405 | 412 | %%%=================================================================== |
406 | 413 | %%% gen_server callbacks |
407 | 414 | %%%=================================================================== |
@@ -1121,7 +1128,8 @@ validate_secret_in_txn(NewProps, PrevProps, Snapshot) -> |
1121 | 1128 | ok ?= validate_secrets_encryption_usage_change(NewProps, PrevProps, |
1122 | 1129 | Snapshot), |
1123 | 1130 | ok ?= validate_dek_related_usage_change(NewProps, PrevProps, Snapshot), |
1124 | | - ok ?= validate_encryption_secret_id(NewProps, Snapshot) |
| 1131 | + ok ?= validate_encryption_secret_id(NewProps, Snapshot), |
| 1132 | + ok ?= validate_name_uniqueness(NewProps, Snapshot) |
1125 | 1133 | end. |
1126 | 1134 |
|
1127 | 1135 | -spec execute_on_master({module(), atom(), [term()]}) -> term(). |
@@ -2029,6 +2037,14 @@ initiate_deks_drop(Kind, IdsToDrop, #state{deks = DeksInfo} = State0) -> |
2029 | 2037 | State0 |
2030 | 2038 | end. |
2031 | 2039 |
|
| 2040 | +-spec validate_name_uniqueness(secret_props(), chronicle_snapshot()) -> |
| 2041 | + ok | {error, name_not_unique}. |
| 2042 | +validate_name_uniqueness(#{id := Id, name := Name}, Snapshot) -> |
| 2043 | + case is_name_unique(Id, Name, Snapshot) of |
| 2044 | + true -> ok; |
| 2045 | + false -> {error, name_not_unique} |
| 2046 | + end. |
| 2047 | + |
2032 | 2048 | -ifdef(TEST). |
2033 | 2049 | replace_secret_in_list_test() -> |
2034 | 2050 | ?assertEqual(false, replace_secret_in_list(#{id => 3, p => 5}, [])), |
|
0 commit comments