- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
Class ::xo::ConnectionContext
::xo::ConnectionContextcreate ... \
[ -mobile mobile ] \
[ -requester requester ] \
[ -url url ] \
[ -user user ] \
[ -user_id user_id ]
Class Relations
::xotcl::Class create ::xo::ConnectionContext \ -superclass ::xo::ContextMethods (to be applied on instances)
eval_as_user (scripted, public)
<instance of xo::ConnectionContext> eval_as_user \ [ -user_id user_id ] cmd
Run a command as the specified different user. Essentially, this method updates xo::cc and the ad_conn array array with the specified user, runs the command and resets the user to the previous value.
- Switches:
- -user_id (optional, integer)
- switch temporarily to this user
- Parameters:
- cmd (required)
- command to be exevuted
- Testcases:
- create_test_items
#ns_log notice "RUN AS USER $user_id $cmd" set result "" set current_user_id [:get_user_id] try { :set_user_id $user_id :uplevel $cmd } on ok {r} { set result $r } finally { :set_user_id $current_user_id } return $resultpermission (scripted, public)
<instance of xo::ConnectionContext> permission \ -object_id object_id -privilege privilege [ -party_id party_id ]
Call ::permission::permission_p but avoid multiple calls in the same request through caching in the connection context
- Switches:
- -object_id (required, integer)
- -privilege (required)
- -party_id (optional, integer)
- Testcases:
- xowiki_test_cases
if {![info exists party_id]} { set party_id ${:user_id} } # :log "-- context permission user_id=$party_id uid=[::xo::cc user_id]" "untrusted=[::xo::cc set untrusted_user_id]" if {$party_id == 0} { set granted [permission::permission_p -no_login -party_id $party_id -object_id $object_id -privilege $privilege] #:msg "--p lookup $key ==> $granted uid=${:user_id} uuid=${:untrusted_user_id}" if {$granted || ${:user_id} == ${:untrusted_user_id}} { return $granted } # The permission is not granted for the public. # We force the user to login #:log "-- require login" #auth::require_login return 0 } #:msg "--p lookup $key" return [permission::permission_p -no_login -party_id $party_id -object_id $object_id -privilege $privilege] #:log "-- context return [set :$key]" #set :$keyquery_parameter (scripted, public)
<instance of xo::ConnectionContext> query_parameter __spec \ [ default ]
Get query parameter with default and optional value constraints. In case the value check for the query parameter fails, and no further precautions are performed (::aa_test_noabort is set), the method raises an exception with "ad_return_complaint" and aborts the script.
- Parameters:
- __spec (required)
- has the formname or name:value_constraint
- default (optional)
- default value
- Returns:
- actual value of the query parameter
- Testcases:
- api__context, test_xo_cc, path_resolve
# # Try to split up provided "__spec" argument into name and # value constraint components. # set __name $__spec regexp {^([^:]+):(.*)$} $__spec . __name constraint if {[:exists_parameter $__name]} { set value [:get_parameter $__name] } else { set value [next $__name $default] } # # If we have a value-constraint, we check for empty values only in # cases, where multiplicity is specified. This means effectively # that the default multiplicity is "0..1". # if {[info exists constraint]} { set r [xo::validate_parameter_constraints $__name $constraint $value] if {$r ne $value} { ns_log notice "converting value checker: query parameter <$__spec> -> '$value' -> '$r'" set value $r } } return $value
- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
![[i]](/resources/acs-subsite/ZoomIn16.gif)