COOPENOMICS  v1
Кооперативная Экономика
admins.hpp
См. документацию.
1#pragma once
2
3void check_auth_or_fail(eosio::name contract, eosio::name coopname, eosio::name admin, eosio::name action_name)
4{
5 // если подписывает ключ кооператива или контракт - разрешено всё.
6 if (has_auth(coopname) || has_auth(contract))
7 return;
8
9 // если нет подписи кооператива, то требуем подпись админа, кем бы он небыл
10 require_auth(admin);
11
12 //проверяем, а админ - это председатель?
13 auto board = get_board_by_type_or_fail(coopname, "soviet"_n);
14 bool is_valid = board.is_valid_chairman(admin);
15
16 if (!is_valid)
17 { // если не председатель - проверяем гранулы прав доступа админа к действию
18 staff_index staff(_soviet, coopname.value);
19 auto administrator = staff.find(admin.value);
20 eosio::check(administrator != staff.end(), "Администратор не найден");
21 bool has_right = administrator->has_right(_gateway, action_name);
22
23 eosio::check(has_right, "Недостаточно прав доступа к действию");
24 } else {
25 // если председатель - разрешено всё.
26 return;
27 }
28
29};
void check_auth_or_fail(eosio::name contract, eosio::name coopname, eosio::name admin, eosio::name action_name)
Definition: admins.hpp:3
static constexpr eosio::name _gateway
Definition: consts.hpp:152
static constexpr eosio::name _soviet
Definition: consts.hpp:156
eosio::multi_index<"staff"_n, staff > staff_index
Тип мультииндекса для таблицы администраторов
Definition: coops.hpp:167
boards get_board_by_type_or_fail(eosio::name coopname, eosio::name type)
Definition: coops.hpp:354
const auto admin
Definition: eosio.limitauth_tests.cpp:18
contract
Definition: eosio.msig_tests.cpp:977
Структура, представляющая администраторов кооператива.
Definition: coops.hpp:147