Allow clients logged in with user rights to run the autosave command.
This commit is contained in:
@@ -324,9 +324,31 @@ proc doAutosave {} {
|
||||
}
|
||||
}
|
||||
publish doAutosave user
|
||||
|
||||
# return -1 if logged in as spy
|
||||
proc set_rights {level} {
|
||||
array set rights {1 manager manager 1 2 user user 2 3 spy spy 3}
|
||||
array set password {manager ansto user sydney spy 007}
|
||||
|
||||
set myrights [SplitReply [config myrights] ]
|
||||
if {$myrights == $rights(spy)} {
|
||||
return -1
|
||||
}
|
||||
# Convert 'level' to a name if it is passed as an integer
|
||||
if { [string is integer $level] } {
|
||||
set level $rights($level)
|
||||
}
|
||||
config rights $level $password($level)
|
||||
return $myrights
|
||||
}
|
||||
proc autosave { {interval 300} } {
|
||||
global AUTOSAVE_STATE
|
||||
set as_error 0
|
||||
|
||||
set myrights [set_rights manager]
|
||||
if {$myrights == -1} {
|
||||
return -code error "ERROR: You are not authorized for this operation"
|
||||
}
|
||||
set interval [string tolower $interval]
|
||||
if {$interval == "check" || $interval == "status"} {
|
||||
if { $AUTOSAVE_STATE == "ENABLED" } {
|
||||
@@ -350,9 +372,13 @@ proc autosave { {interval 300} } {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return -code error "ERROR: Invalid argument in '[info level 0]', should be an integer or 'check'"
|
||||
set as_error 1
|
||||
}
|
||||
|
||||
set_rights $myrights
|
||||
|
||||
if {$as_error} {
|
||||
return -code error "ERROR: Invalid argument in '[info level 0]', should be an integer or 'check'"
|
||||
}
|
||||
}
|
||||
publish autosave user
|
||||
|
||||
Reference in New Issue
Block a user