| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 2197097 commit 76b4cab
2 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -854,7 +854,7 @@ std::string TriggerNodeReport(Isolate* isolate, | |||
| 854 | 854 | THROW_IF_INSUFFICIENT_PERMISSIONS( | |
| 855 | 855 | env, | |
| 856 | 856 | permission::PermissionScope::kFileSystemWrite, | |
| 857 | - std::string_view(Environment::GetCwd(env->exec_path())), | ||
| 857 | + Environment::GetCwd(env->exec_path()), | ||
| 858 | 858 | filename); | |
| 859 | 859 | } | |
| 860 | 860 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -27,25 +27,63 @@ class FSReqBase; | |||
| 27 | 27 | ||
| 28 | 28 | namespace permission { | |
| 29 | 29 | ||
| 30 | - #define THROW_IF_INSUFFICIENT_PERMISSIONS(env, perm_, resource_, ...) \ | ||
| 30 | + #define THROW_IF_INSUFFICIENT_PERMISSIONS(env, perm, resource, ...) \ | ||
| 31 | 31 | do { \ | |
| 32 | - if (!env->permission()->is_granted(env, perm_, resource_)) [[unlikely]] { \ | ||
| 32 | + node::Environment* env__ = (env); \ | ||
| 33 | + const node::permission::PermissionScope perm__ = (perm); \ | ||
| 34 | + const auto resource__ = (resource); \ | ||
| 35 | + if (!env__->permission()->is_granted(env__, perm__, resource__)) \ | ||
| 36 | + [[unlikely]] { \ | ||
| 33 | 37 | node::permission::Permission::ThrowAccessDenied( \ | |
| 34 | - (env), perm_, resource_); \ | ||
| 38 | + env__, perm__, resource__); \ | ||
| 35 | 39 | return __VA_ARGS__; \ | |
| 36 | 40 | } \ | |
| 37 | 41 | } while (0) | |
| 38 | 42 | ||
| 39 | 43 | #define ASYNC_THROW_IF_INSUFFICIENT_PERMISSIONS( \ | |
| 40 | - env, wrap, perm_, resource_, ...) \ | ||
| 44 | + env, wrap, perm, resource, ...) \ | ||
| 41 | 45 | do { \ | |
| 42 | - if (!env->permission()->is_granted(env, perm_, resource_)) [[unlikely]] { \ | ||
| 46 | + node::Environment* env__ = (env); \ | ||
| 47 | + const node::permission::PermissionScope perm__ = (perm); \ | ||
| 48 | + const auto resource__ = (resource); \ | ||
| 49 | + if (!env__->permission()->is_granted(env__, perm__, resource__)) \ | ||
| 50 | + [[unlikely]] { \ | ||
| 43 | 51 | node::permission::Permission::AsyncThrowAccessDenied( \ | |
| 44 | - (env), wrap, perm_, resource_); \ | ||
| 52 | + env__, (wrap), perm__, resource__); \ | ||
| 45 | 53 | return __VA_ARGS__; \ | |
| 46 | 54 | } \ | |
| 47 | 55 | } while (0) | |
| 48 | 56 | ||
| 57 | + #define ERR_ACCESS_DENIED_IF_INSUFFICIENT_PERMISSIONS( \ | ||
| 58 | + env, perm, resource, args, ...) \ | ||
| 59 | + do { \ | ||
| 60 | + node::Environment* env__ = (env); \ | ||
| 61 | + const node::permission::PermissionScope perm__ = (perm); \ | ||
| 62 | + const auto resource__ = (resource); \ | ||
| 63 | + if (!env__->permission()->is_granted(env__, perm__, resource__)) \ | ||
| 64 | + [[unlikely]] { \ | ||
| 65 | + Local<Value> err_access; \ | ||
| 66 | + if (node::permission::CreateAccessDeniedError(env__, perm__, resource__) \ | ||
| 67 | + .ToLocal(&err_access)) { \ | ||
| 68 | + args.GetReturnValue().Set(err_access); \ | ||
| 69 | + } else { \ | ||
| 70 | + args.GetReturnValue().Set(UV_EACCES); \ | ||
| 71 | + } \ | ||
| 72 | + return __VA_ARGS__; \ | ||
| 73 | + } \ | ||
| 74 | + } while (0) | ||
| 75 | + | ||
| 76 | + #define SET_INSUFFICIENT_PERMISSION_ERROR_CALLBACK(scope) \ | ||
| 77 | + void InsufficientPermissionError(std::string_view resource) { \ | ||
| 78 | + v8::HandleScope handle_scope(env()->isolate()); \ | ||
| 79 | + v8::Context::Scope context_scope(env()->context()); \ | ||
| 80 | + v8::Local<v8::Value> arg; \ | ||
| 81 | + if (!permission::CreateAccessDeniedError(env(), (scope), resource) \ | ||
| 82 | + .ToLocal(&arg)) { \ | ||
| 83 | + } \ | ||
| 84 | + MakeCallback(env()->oncomplete_string(), 1, &arg); \ | ||
| 85 | + } | ||
| 86 | + | ||
| 49 | 87 | class Permission { | |
| 50 | 88 | public: | |
| 51 | 89 | Permission(); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments