Allow clients logged in with user rights to run the autosave command.

This commit is contained in:
Ferdi Franceschini
2013-09-23 23:43:40 +10:00
parent edf2ca93a3
commit fd1e8a9737

View File

@@ -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