auth::authority::create (public)
auth::authority::create [ -authority_id authority_id ] -array array
Defined in packages/acs-authentication/tcl/authority-procs.tcl
Create a new authentication authority.
- Switches:
- Options:
- -authority_id (optional)
- -array (required)
- Name of an array containing the column values. The entries are:
- short_name Short name for authority. Used as a key by applications to identify this authority.
- pretty_name Label for the authority to be shown in a list to users picking an authority.
- enabled_p 't' if this authority available, 'f' if it's disabled. Defaults to 'f'.
- sort_order Sort ordering determines the order in which authorities are listed in the user interface. Defaults to the currently highest sort order plus one.
- auth_impl_id The ID of the implementation of the 'auth_authentication' service contract. Defaults to none.
- pwd_impl_id The ID of the implementation of the 'auth_password' service contract. Defaults to none.
- forgotten_pwd_url An alternative URL to redirect to when the user has forgotten his/her password. Defaults to none.
- change_pwd_url An alternative URL to redirect to when the user wants to change his/her password. Defaults to none.
- register_impl_id The ID of the implementation of the 'auth_registration' service contract. Defaults to none.
- register_url An alternative URL to redirect to when the user wants to register for an account. Defaults to none.
- user_info_impl_id The ID of the implementation of the 'auth_user_info' service contract. Defaults to none.
- get_doc_impl_id Id of the 'auth_sync_retrieve' service contract implementation
- process_doc_impl_id Id of the 'auth_sync_process' service contract implementation
- batch_sync_enabled_p Is batch sync enabled for the authority?
- -authority_id
- Authority_id, or blank if you want one generated for you.
- Author:
- Lars Pind <lars@collaboraid.biz>
- Partial Call Graph (max 5 caller/called nodes):
- Testcases:
- auth_authority_api, sync_batch_ims_example_doc, sync_batch_ims_test
Source code: upvar $array row db_transaction { if { $authority_id eq "" } { set authority_id [db_nextval "acs_object_id_seq"] } set names [array names row] array set column_defaults [get_column_defaults] set all_columns [array names column_defaults] # Check that the columns provided in the array are all valid # Set array entries as local variables foreach name $names { if {$name ni $all_columns} { error "Attribute '$name' isn't valid for auth_authorities." } set $name $row($name) } # Check that the required columns are there foreach name [get_required_columns] { if { ![info exists $name] } { error "Required column '$name' missing for auth_authorities." } } # Set default values for columns not provided foreach column $all_columns { if { $column ni $names } { set $column $column_defaults($column) } } if {[ns_conn isconnected]} { set context_id [ad_conn package_id] set creation_user [ad_conn user_id] set creation_ip [ad_conn peeraddr] } else { set context_id "" set creation_user "" set creation_ip "" } # Auto generate short name if not provided and make # sure it's unique # TODO: check for max length 255? if { $short_name eq "" } { set existing_short_names [db_list select_short_names { select short_name from auth_authorities }] set short_name [util_text_to_url -replacement "_" -existing_urls $existing_short_names -text $pretty_name] } db_transaction { set authority_id [db_exec_plsql create_authority {}] # Set the arguments not taken by the new function with an update statement # LARS: Great, we had a nice abstraction going, so you only had to add a new column in # one place, now that abstraction is broken, because you have to add it here as well foreach column { user_info_impl_id get_doc_impl_id process_doc_impl_id batch_sync_enabled_p help_contact_text_format } { set edit_columns($column) [set $column] } edit -authority_id $authority_id -array edit_columns } } # Flush the cache, so that if we've tried to request this short_name while it didn't exist, we will now find it if { [info exists row(short_name)] && $row(short_name) ne "" } { get_id_flush -short_name $row(short_name) } return $authority_idGeneric XQL file: packages/acs-authentication/tcl/authority-procs.xql
PostgreSQL XQL file: <fullquery name="auth::authority::create.create_authority"> <querytext> select authority__new( :authority_id, null, -- object_type :short_name, :pretty_name, :enabled_p, :sort_order, :auth_impl_id, :pwd_impl_id, :forgotten_pwd_url, :change_pwd_url, :register_impl_id, :register_url, :help_contact_text, :creation_user, :creation_ip, :context_id ); </querytext> </fullquery>packages/acs-authentication/tcl/authority-procs-postgresql.xql
Oracle XQL file: <fullquery name="auth::authority::create.create_authority"> <querytext> begin :1 := authority.new( authority_id => :authority_id, short_name => :short_name, pretty_name => :pretty_name, enabled_p => :enabled_p, sort_order => :sort_order, auth_impl_id => :auth_impl_id, pwd_impl_id => :pwd_impl_id, forgotten_pwd_url => :forgotten_pwd_url, change_pwd_url => :change_pwd_url, register_impl_id => :register_impl_id, register_url => :register_url, help_contact_text => :help_contact_text, creation_user => :creation_user, creation_ip => :creation_ip, context_id => :context_id ); end; </querytext> </fullquery>packages/acs-authentication/tcl/authority-procs-oracle.xql