[{"data":1,"prerenderedAt":780},["ShallowReactive",2],{"/docs/jobs/mechanicjob/setup/permissions":3,"/docs/jobs/mechanicjob/setup/permissions-surround":768,"/docs/jobs/mechanicjob/setup/permissions-implemented-suggestions":779},{"id":4,"title":5,"body":6,"description":758,"extension":759,"head":760,"implementedSuggestions":760,"meta":761,"navigation":762,"path":763,"schemaOrg":760,"seo":764,"sitemap":765,"stem":766,"__hash__":767},"docs/1.docs/0.jobs/2.mechanicjob/2.setup/4.permissions.md","Permissions",{"type":7,"value":8,"toc":741},"minimark",[9,39,44,63,380,383,391,401,411,415,424,430,441,450,460,471,480,483,489,496,507,513,526,530,539,543,550,615,626,633,639,645,653,657,721,725,728,737],[10,11,12],"warning",{},[13,14,15,19,20,25,26,30,31,34,35,38],"p",{},[16,17,18],"strong",{},"Admin command not working?"," Make sure the ",[21,22,24],"a",{"href":23},"/docs/installation#permissions-bootstrap","bootstrap ACEs"," are present in your ",[27,28,29],"code",{},"server.cfg"," and your player is in ",[27,32,33],{},"group.admin",". Sky now wires every per-command permission to ACE automatically — no more ",[27,36,37],{},"Sky.Config.AdminGroups",".",[40,41,43],"h2",{"id":42},"how-sky-checks-command-permissions","How Sky checks command permissions",[13,45,46,47,50,51,54,55,58,59,62],{},"Every administrator command or protected feature is gated by ",[27,48,49],{},"Config.CommandPermissions"," in ",[27,52,53],{},"sky_mechanicjob/config/adv_config.lua",". At server start, ",[27,56,57],{},"sky_base"," reads that table and emits one ",[27,60,61],{},"add_ace"," per command × group:",[64,65,70],"pre",{"className":66,"code":67,"filename":53,"language":68,"meta":69,"style":69},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.CommandPermissions = {\n    admintuning      = { \"god\", \"superadmin\", \"admin\" },\n    adminrepair      = { \"god\", \"superadmin\", \"admin\" },\n    debugadminrepair = { \"god\", \"superadmin\", \"admin\" },\n    debugstancerdefault = { \"god\", \"superadmin\", \"admin\" },\n    migrate          = { \"god\", \"superadmin\", \"admin\" },\n    workshopcreator  = { \"god\", \"superadmin\", \"admin\" },\n    debugwearzero    = { \"god\", \"superadmin\", \"admin\" },\n    debugwearzeroall = { \"god\", \"superadmin\", \"admin\" },\n}\n","lua","",[27,71,72,92,136,170,204,238,272,306,340,374],{"__ignoreMap":69},[73,74,77,81,85,89],"span",{"class":75,"line":76},"line",1,[73,78,80],{"class":79},"sTEyZ","Config.",[73,82,84],{"class":83},"sBMFI","CommandPermissions",[73,86,88],{"class":87},"sMK4o"," =",[73,90,91],{"class":79}," {\n",[73,93,95,98,101,104,107,111,113,116,118,121,123,125,127,130,133],{"class":75,"line":94},2,[73,96,97],{"class":79},"    admintuning      ",[73,99,100],{"class":87},"=",[73,102,103],{"class":79}," { ",[73,105,106],{"class":87},"\"",[73,108,110],{"class":109},"sfazB","god",[73,112,106],{"class":87},[73,114,115],{"class":79},", ",[73,117,106],{"class":87},[73,119,120],{"class":109},"superadmin",[73,122,106],{"class":87},[73,124,115],{"class":79},[73,126,106],{"class":87},[73,128,129],{"class":109},"admin",[73,131,132],{"class":87},"\" ",[73,134,135],{"class":79},"},\n",[73,137,139,142,144,146,148,150,152,154,156,158,160,162,164,166,168],{"class":75,"line":138},3,[73,140,141],{"class":79},"    adminrepair      ",[73,143,100],{"class":87},[73,145,103],{"class":79},[73,147,106],{"class":87},[73,149,110],{"class":109},[73,151,106],{"class":87},[73,153,115],{"class":79},[73,155,106],{"class":87},[73,157,120],{"class":109},[73,159,106],{"class":87},[73,161,115],{"class":79},[73,163,106],{"class":87},[73,165,129],{"class":109},[73,167,132],{"class":87},[73,169,135],{"class":79},[73,171,173,176,178,180,182,184,186,188,190,192,194,196,198,200,202],{"class":75,"line":172},4,[73,174,175],{"class":79},"    debugadminrepair ",[73,177,100],{"class":87},[73,179,103],{"class":79},[73,181,106],{"class":87},[73,183,110],{"class":109},[73,185,106],{"class":87},[73,187,115],{"class":79},[73,189,106],{"class":87},[73,191,120],{"class":109},[73,193,106],{"class":87},[73,195,115],{"class":79},[73,197,106],{"class":87},[73,199,129],{"class":109},[73,201,132],{"class":87},[73,203,135],{"class":79},[73,205,207,210,212,214,216,218,220,222,224,226,228,230,232,234,236],{"class":75,"line":206},5,[73,208,209],{"class":79},"    debugstancerdefault ",[73,211,100],{"class":87},[73,213,103],{"class":79},[73,215,106],{"class":87},[73,217,110],{"class":109},[73,219,106],{"class":87},[73,221,115],{"class":79},[73,223,106],{"class":87},[73,225,120],{"class":109},[73,227,106],{"class":87},[73,229,115],{"class":79},[73,231,106],{"class":87},[73,233,129],{"class":109},[73,235,132],{"class":87},[73,237,135],{"class":79},[73,239,241,244,246,248,250,252,254,256,258,260,262,264,266,268,270],{"class":75,"line":240},6,[73,242,243],{"class":79},"    migrate          ",[73,245,100],{"class":87},[73,247,103],{"class":79},[73,249,106],{"class":87},[73,251,110],{"class":109},[73,253,106],{"class":87},[73,255,115],{"class":79},[73,257,106],{"class":87},[73,259,120],{"class":109},[73,261,106],{"class":87},[73,263,115],{"class":79},[73,265,106],{"class":87},[73,267,129],{"class":109},[73,269,132],{"class":87},[73,271,135],{"class":79},[73,273,275,278,280,282,284,286,288,290,292,294,296,298,300,302,304],{"class":75,"line":274},7,[73,276,277],{"class":79},"    workshopcreator  ",[73,279,100],{"class":87},[73,281,103],{"class":79},[73,283,106],{"class":87},[73,285,110],{"class":109},[73,287,106],{"class":87},[73,289,115],{"class":79},[73,291,106],{"class":87},[73,293,120],{"class":109},[73,295,106],{"class":87},[73,297,115],{"class":79},[73,299,106],{"class":87},[73,301,129],{"class":109},[73,303,132],{"class":87},[73,305,135],{"class":79},[73,307,309,312,314,316,318,320,322,324,326,328,330,332,334,336,338],{"class":75,"line":308},8,[73,310,311],{"class":79},"    debugwearzero    ",[73,313,100],{"class":87},[73,315,103],{"class":79},[73,317,106],{"class":87},[73,319,110],{"class":109},[73,321,106],{"class":87},[73,323,115],{"class":79},[73,325,106],{"class":87},[73,327,120],{"class":109},[73,329,106],{"class":87},[73,331,115],{"class":79},[73,333,106],{"class":87},[73,335,129],{"class":109},[73,337,132],{"class":87},[73,339,135],{"class":79},[73,341,343,346,348,350,352,354,356,358,360,362,364,366,368,370,372],{"class":75,"line":342},9,[73,344,345],{"class":79},"    debugwearzeroall ",[73,347,100],{"class":87},[73,349,103],{"class":79},[73,351,106],{"class":87},[73,353,110],{"class":109},[73,355,106],{"class":87},[73,357,115],{"class":79},[73,359,106],{"class":87},[73,361,120],{"class":109},[73,363,106],{"class":87},[73,365,115],{"class":79},[73,367,106],{"class":87},[73,369,129],{"class":109},[73,371,132],{"class":87},[73,373,135],{"class":79},[73,375,377],{"class":75,"line":376},10,[73,378,379],{"class":79},"}\n",[13,381,382],{},"For the snippet above, sky_base runs at boot:",[64,384,389],{"className":385,"code":387,"language":388},[386],"language-text","add_ace group.god         sky_mechanicjob.admintuning allow\nadd_ace group.superadmin  sky_mechanicjob.admintuning allow\nadd_ace group.admin       sky_mechanicjob.admintuning allow\n… one block per command\n","text",[27,390,387],{"__ignoreMap":69},[13,392,393,394,397,398,38],{},"On QBCore, sky_base additionally wires the ",[27,395,396],{},"qbcore.\u003Cgroup>"," principal for resilience. At runtime each command resolves with a single ",[27,399,400],{},"IsPlayerAceAllowed(src, \"sky_mechanicjob.\u003Ccommand>\")",[13,402,403,404,407,408,410],{},"If a command is ",[16,405,406],{},"not"," listed in ",[27,409,49],{},", only the server console can use it.",[40,412,414],{"id":413},"framework-setup","Framework setup",[416,417,419,420,423],"h3",{"id":418},"qbox-principal-prefix-group","QBox (principal prefix: ",[27,421,422],{},"group.",")",[13,425,426,427,429],{},"Add your admin player to ",[27,428,33],{},":",[64,431,435],{"className":432,"code":433,"filename":29,"language":434,"meta":69,"style":69},"language-cfg shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","add_principal identifier.license:\u003Clicense> group.admin\n","cfg",[27,436,437],{"__ignoreMap":69},[73,438,439],{"class":75,"line":76},[73,440,433],{},[13,442,443,444,38],{},"Reference: ",[21,445,449],{"href":446,"rel":447},"https://github.com/Qbox-project/txAdminRecipe/blob/main/permissions.cfg",[448],"nofollow","Qbox txAdmin permissions recipe",[416,451,453,454,457,458,423],{"id":452},"qbcore-principal-prefix-qbcore-or-group","QBCore (principal prefix: ",[27,455,456],{},"qbcore."," or ",[27,459,422],{},[13,461,462,463,466,467,470],{},"sky_base wires both ",[27,464,465],{},"group.\u003Cg>"," and ",[27,468,469],{},"qbcore.\u003Cg>"," on QBCore, so either prefix works:",[64,472,474],{"className":432,"code":473,"filename":29,"language":434,"meta":69,"style":69},"add_principal identifier.license:\u003Clicense> qbcore.admin\n",[27,475,476],{"__ignoreMap":69},[73,477,478],{"class":75,"line":76},[73,479,473],{},[13,481,482],{},"Or, if an existing admin is already online:",[64,484,487],{"className":485,"code":486,"language":388},[386],"/addpermission 1 god\n",[27,488,486],{"__ignoreMap":69},[416,490,492,493,423],{"id":491},"esx-legacy-usersgroup","ESX Legacy (",[27,494,495],{},"users.group",[13,497,498,499,502,503,506],{},"ESX's ",[27,500,501],{},"setGroup"," automatically calls ",[27,504,505],{},"add_principal identifier.\u003Clicense> group.\u003Cg>"," via es_extended, so ESX players get the same ACE principal as QBox/QBCore. Grant the group in-game:",[64,508,511],{"className":509,"code":510,"language":388},[386],"/setgroup 1 admin\n",[27,512,510],{"__ignoreMap":69},[13,514,515,516,115,521,38],{},"References: ",[21,517,520],{"href":518,"rel":519},"https://documentation.esx-framework.org/legacy/Commands/setgroup/",[448],"ESX /setgroup",[21,522,525],{"href":523,"rel":524},"https://documentation.esx-framework.org/legacy/Commands/principals/",[448],"ESX principals",[416,527,529],{"id":528},"vrp","vRP",[13,531,532,533,535,536,538],{},"Set the player's group via your vRP admin tooling, then ensure the ",[27,534,465],{}," principal is registered (vRP setups commonly add this to ",[27,537,29],{},").",[40,540,542],{"id":541},"custom-groups","Custom groups",[13,544,545,546,549],{},"To allow another group (for example ",[27,547,548],{},"supporter",") to use a single command, just add it to the relevant entry:",[64,551,553],{"className":66,"code":552,"filename":53,"language":68,"meta":69,"style":69},"Config.CommandPermissions = {\n    admintuning = { \"god\", \"superadmin\", \"admin\", \"supporter\" },\n    …\n}\n",[27,554,555,565,606,611],{"__ignoreMap":69},[73,556,557,559,561,563],{"class":75,"line":76},[73,558,80],{"class":79},[73,560,84],{"class":83},[73,562,88],{"class":87},[73,564,91],{"class":79},[73,566,567,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604],{"class":75,"line":94},[73,568,569],{"class":79},"    admintuning ",[73,571,100],{"class":87},[73,573,103],{"class":79},[73,575,106],{"class":87},[73,577,110],{"class":109},[73,579,106],{"class":87},[73,581,115],{"class":79},[73,583,106],{"class":87},[73,585,120],{"class":109},[73,587,106],{"class":87},[73,589,115],{"class":79},[73,591,106],{"class":87},[73,593,129],{"class":109},[73,595,106],{"class":87},[73,597,115],{"class":79},[73,599,106],{"class":87},[73,601,548],{"class":109},[73,603,132],{"class":87},[73,605,135],{"class":79},[73,607,608],{"class":75,"line":138},[73,609,610],{"class":79},"    …\n",[73,612,613],{"class":75,"line":172},[73,614,379],{"class":79},[13,616,617,618,621,622,625],{},"Then grant the player the principal the same way as above (e.g. ",[27,619,620],{},"add_principal identifier.license:\u003Clicense> group.supporter","), and restart ",[27,623,624],{},"sky_mechanicjob"," so the new wiring runs.",[40,627,629,630],{"id":628},"activating-the-boss-menu-with-setboss","Activating the boss menu with ",[27,631,632],{},"/setboss",[13,634,635,636,638],{},"Once your admin group is set, run ",[27,637,632],{}," to grant every permission to a specific job grade:",[64,640,643],{"className":641,"code":642,"language":388},[386],"/setboss mechanic 4\n",[27,644,642],{"__ignoreMap":69},[13,646,647,648,652],{},"See the ",[21,649,651],{"href":650},"../reference/commands","Commands"," page for the full admin command list.",[40,654,656],{"id":655},"troubleshooting","Troubleshooting",[658,659,660,672,690,704],"accordion",{},[13,661,662,663,665,666,668,669,671],{},"::accordion-item{label=\"Command says \"No permission\"\"}\nPlayer is not in any of the groups listed for that command in ",[27,664,49],{},", or the ",[21,667,24],{"href":23}," are missing. Restart the server after editing ",[27,670,29],{},".\n::",[673,674,676],"accordion-item",{"label":675},"I granted the group but still no access",[13,677,678,679,681,682,685,686,689],{},"The player must reconnect after the change. After ",[27,680,29],{}," edits, run ",[27,683,684],{},"refresh"," + ",[27,687,688],{},"load permissions"," in the console or restart the server.",[673,691,693],{"label":692},"I added a custom group like supporter",[13,694,695,696,699,700,703],{},"Add the group string to the relevant ",[27,697,698],{},"Config.CommandPermissions[command]"," array, then grant the principal (",[27,701,702],{},"add_principal … group.supporter",") and restart the resource.",[673,705,707],{"label":706},"Unknown command: /setboss",[13,708,709,712,713,716,717,50,719,38],{},[27,710,711],{},"sky_jobs_base"," is not running. It must start ",[16,714,715],{},"before"," ",[27,718,624],{},[27,720,29],{},[40,722,724],{"id":723},"support","Support",[13,726,727],{},"Need help? Our support team is always ready to assist",[729,730],"u-button",{"color":731,"icon":732,"label":733,"target":734,"to":735,"variant":736},"neutral","i-simple-icons-discord","Join Discord","_blank","https://discord.gg/sky-systems","subtle",[738,739,740],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":69,"searchDepth":76,"depth":94,"links":742},[743,744,753,754,756,757],{"id":42,"depth":94,"text":43},{"id":413,"depth":94,"text":414,"children":745},[746,748,750,752],{"id":418,"depth":138,"text":747},"QBox (principal prefix: group.)",{"id":452,"depth":138,"text":749},"QBCore (principal prefix: qbcore. or group.)",{"id":491,"depth":138,"text":751},"ESX Legacy (users.group)",{"id":528,"depth":138,"text":529},{"id":541,"depth":94,"text":542},{"id":628,"depth":94,"text":755},"Activating the boss menu with /setboss",{"id":655,"depth":94,"text":656},{"id":723,"depth":94,"text":724},"Configure ACE-backed administrator access for Sky Mechanic Job commands and features.","md",null,{},true,"/docs/jobs/mechanicjob/setup/permissions",{"title":5,"description":758},{"loc":763},"1.docs/0.jobs/2.mechanicjob/2.setup/4.permissions","FQ-wer2OBpQsouQx2i2UX-73FltEc2miuoV68XHv2jM",[769,774],{"title":770,"path":771,"stem":772,"description":773,"children":-1},"Workshop Setup","/docs/jobs/mechanicjob/setup/workshop-setup","1.docs/0.jobs/2.mechanicjob/2.setup/3.workshop-setup","Place and verify the interactions used by mechanic workshops.",{"title":775,"path":776,"stem":777,"description":778,"children":-1},"Tuning and Orders","/docs/jobs/mechanicjob/features/tuning-and-orders","1.docs/0.jobs/2.mechanicjob/3.features/1.tuning-and-orders","Configure tuning access, prices, required parts, payments, installations, and refunds.",[],1781873921359]