- struct hs_user *hs_user = hs_get_user(hi, 1);
- if(!strcmp(argv[1], "*")) {
- if(!check_management_access(user->handle_info, NULL, NULL)) {
- reply("HSMSG_ACCESS_DENIED");
- return 0;
- }
+ struct hs_user *hs_user = hs_get_user(hi, 1);
+ for(assignment = hs_user->assignments; assignment; assignment = assignment->unext) {
+ if(assignment->active)
+ break;
+ }
+ if(assignment && !check_management_access(user->handle_info, (hostserv_conf.manager_toplevel_can_oset ? assignment->secondlevel->toplevel : NULL), (hostserv_conf.manager_secondlevel_can_oset ? assignment->secondlevel : NULL))) {
+ reply("HSMSG_ACCESS_DENIED");
+ return 0;
+ }
+ if(!strcmp(argv[1], "*")) {
+ if(!assignment)
+ return 0; //simply ignore (there is no assignment in use)