• last updated 5 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
mark functions as private

improve listing of test coverage

  1. … 15 more files in changeset.
reduce verbosity

improve listing of test coverage

  1. … 8 more files in changeset.
make listing of tested procs more complete

    • -0
    • +1
    ./test/application-data-link-procs.tcl
  1. … 6 more files in changeset.
make listing of tested procs more complete

  1. … 1 more file in changeset.
make listing of tested procs more complete

  1. … 5 more files in changeset.
make code slightly more regular

reduce verbosity

remove race condition from user/person/party cache management

2 new API functions acs_user::promote_person_to_user and acs_user::demote_user (see issue #3461)

acs_user::promote_person_to_user

Promotes a person/party to an ACS user.

@param person_id the person_id in the acs system that should be promoted to a user.

@param username the username to be used for this user.

Defaults to the person's email

@param password the password to be used for this user.

Defaults to a randomly generated password.

@param authority_id the authority that will be used for the user.

@param locale locale to be used in user preferences.

Defaults to the site wide locale is taken.

@return The user_id of the person promoted to user

@error An error is thrown

if the username is already in use,

or the person_id has no email address,

or if person_id is not in the persons table.

acs_user::demote_user

Demotes an ACS user to a person/party.

This will fail if other tables have content referencing the users

table. It is probably best for tables created in other packages

to reference persons, parties, or acs_objects instead. This proc

could be extended with an option to find all referenced tables and

remove rows referencing this user.

See the following FK relationship in basic OpenACS installations:

TABLE "acs_objects" CONSTRAINT "acs_objects_creation_user_fk" FOREIGN KEY (creation_user) REFERENCES users(user_id)

TABLE "acs_objects" CONSTRAINT "acs_objects_modifying_user_fk" FOREIGN KEY (modifying_user) REFERENCES users(user_id)

TABLE "ad_locale_user_prefs" CONSTRAINT "ad_locale_user_prefs_users_fk" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

TABLE "auth_batch_job_entries" CONSTRAINT "auth_batch_job_entries_user_fk" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE SET NULL

TABLE "auth_batch_jobs" CONSTRAINT "auth_batch_jobs_user_fk" FOREIGN KEY (creation_user) REFERENCES users(user_id) ON DELETE SET NULL

TABLE "cr_news" CONSTRAINT "cr_news_approval_user_fk" FOREIGN KEY (approval_user) REFERENCES users(user_id)

TABLE "email_images" CONSTRAINT "email_images_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id)

TABLE "forums_messages" CONSTRAINT "forums_mess_last_poster_fk" FOREIGN KEY (last_poster) REFERENCES users(user_id)

TABLE "forums_messages" CONSTRAINT "forums_mess_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id)

TABLE "forums_reading_info" CONSTRAINT "forums_read_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id)

TABLE "lang_messages_audit" CONSTRAINT "lang_messages_audit_ou_fk" FOREIGN KEY (overwrite_user) REFERENCES users(user_id)

TABLE "lang_messages" CONSTRAINT "lang_messages_creation_user_fk" FOREIGN KEY (creation_user) REFERENCES users(user_id)

TABLE "lang_user_timezone" CONSTRAINT "lang_user_timezone_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

TABLE "notification_replies" CONSTRAINT "notif_repl_from_fk" FOREIGN KEY (from_user) REFERENCES users(user_id)

TABLE "notification_user_map" CONSTRAINT "notif_user_map_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

TABLE "notifications" CONSTRAINT "notifications_notif_user_fk" FOREIGN KEY (notif_user) REFERENCES users(user_id)

TABLE "notification_requests" CONSTRAINT "notifications_request_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

TABLE "proctoring_examination_statement_acceptance" CONSTRAINT "proctoring_examination_statement_acceptance_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

TABLE "user_portraits" CONSTRAINT "user_portraits_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id)

TABLE "user_preferences" CONSTRAINT "user_preferences_user_id_fk" FOREIGN KEY (user_id) REFERENCES users(user_id)

TABLE "xowiki_tags" CONSTRAINT "xowiki_tags_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(user_id)

support multiple argument messages for ad_log to improve compatibility with ns_log

avoid array notation for per_thread caches to ease flushing

  1. … 3 more files in changeset.
mark f::reverse as depreacted. There is no evident reason, why not the built-in "lreverse" is used

make end of options explicit

  1. … 28 more files in changeset.
util_return_headers: set default charset for text content (in case none is specified and none is set in the config file) to utf-8 (was iso-8850-1)

util_return_headers: align the behavior under AOLserver with NaviServer

added method "get" for "LockfreeCache" (somewhat similar to nsv_get)

Hack to force user agents logging in via the test api to exhibit a cookie based authentication

make call more robust in case "location" is not provided via config file

provide compatibility for Tcl versions before tcl 8.6.2

Revert to previous strategy of determining available subcommands.

Running the provided subcommand is dangerous, since the command might

have side effects, might require connections, etc.

The feature test for "ns_http run" was incorrect, since it was not

introduced with 4.99.15 (as the comment suggested), but already with

4.99.4 (2017)... but at this time, the command did not return a dict,

which is assumed in the http-client procs. One can use "ns_http stats"

as an indicator for this feature, which was introduced at the time

when "ns_http run" was starting to return dicts as results.

Provide a more precise name for the feature test of ns_http returning

dicts (naming the feature simply "ns_http" is not a good idea, since

the command could of course be used already before the feature change).

use 'self' for "security::csp::require object-src" instead of 'none' since the latter is non-incremental

don't create a cache, which is not needed

Do not improperly rely on apm_version_names_compare to check for NaviServer version number, use a more reliable capability check instead

Change the regexp so that we catch multiple kinds of error pattern indicating the subcommand does not exist: NaviServer and Tcl return sligthly different error messages

Extend test to expose that we need a better idiom to detect also NaviServer commands

Use a different idiom to detect if a command supports a subcommand, fixing acs-tcl.acs__command_has_subcommand automated test

Fix wording

New test for acs::cmd_has_subcommand exposing how flags at the beginning and end of the error message are not properly recognized