COOPENOMICS  v1
Кооперативная Экономика
auth.hpp
См. документацию.
1#pragma once
2
3#include <eosio/eosio.hpp>
4
9inline void check_auth_or_fail(eosio::name contract, eosio::name coopname, eosio::name admin,
10 eosio::name action_name) {
11 if (has_auth(coopname) || has_auth(contract))
12 return;
13
14 require_auth(admin);
15
16 auto board = get_board_by_type_or_fail(coopname, "soviet"_n);
17 bool is_valid = board.is_valid_chairman(admin);
18
19 if (!is_valid) {
20 staff_index staff(_soviet, coopname.value);
21 auto administrator = staff.find(admin.value);
22 eosio::check(administrator != staff.end(), "Администратор не найден");
23 bool has_right = administrator->has_right(_gateway, action_name);
24
25 eosio::check(has_right, "Недостаточно прав доступа к действию");
26 }
27}
void check_auth_or_fail(eosio::name contract, eosio::name coopname, eosio::name admin, eosio::name action_name)
Definition: auth.hpp:9
static constexpr eosio::name _gateway
Definition: consts.hpp:152
static constexpr eosio::name _soviet
Definition: consts.hpp:156
boards get_board_by_type_or_fail(eosio::name coopname, eosio::name type)
Definition: coops_access_helpers.hpp:18
const auto admin
Definition: eosio.limitauth_tests.cpp:18
contract
Definition: eosio.msig_tests.cpp:977
Definition: table_soviet_staff.hpp:19
eosio::multi_index<"staff"_n, staff > staff_index
Definition: table_soviet_staff.hpp:39