Index: openacs-4/packages/acs-authentication/tcl/authentication-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/tcl/authentication-procs.tcl,v diff -u -N -r1.36 -r1.37 --- openacs-4/packages/acs-authentication/tcl/authentication-procs.tcl 18 Sep 2003 13:44:30 -0000 1.36 +++ openacs-4/packages/acs-authentication/tcl/authentication-procs.tcl 18 Sep 2003 17:12:17 -0000 1.37 @@ -17,7 +17,10 @@ # ##### -ad_proc -public auth::require_login {} { +ad_proc -public auth::require_login { + {-level ok} + {-account_status ok} +} { If the current session is not authenticated, redirect to the login page, and aborts the current page script. Otherwise, returns the user_id of the user logged in. @@ -29,7 +32,10 @@ @see ad_script_abort } { - set user_id [ad_conn user_id] + set user_id [auth::get_user_id \ + -level $level \ + -account_status $account_status] + if { $user_id != 0 } { # user is in fact logged in, return user_id return $user_id @@ -40,14 +46,44 @@ ad_script_abort } -ad_proc -public auth::get_login_focus {} { - Get the relevant focus for the login box. +ad_proc -public auth::get_user_id { + {-level ok} + {-account_status ok} } { - if { [auth::UseEmailForLoginP] } { - return "login.email" - } else { - return "login.username" + Get the current user_id with at least the level of security specified. + If no user is logged in, or the user is not logged in at a sufficiently + high security level, return 0. + + @return user_id of user, if the user is logged in, 0 otherwise. + + + @see ad_script_abort +} { + set untrusted_user_id [ad_conn untrusted_user_id] + + # Do we have any user_id at all? + if { $untrusted_user_id == 0 } { + return 0 } + + # Check account status + if { [string equal $account_status "ok"] && ![string equal [ad_conn account_status] "ok"] } { + return 0 + } + + array set levelv { + none 0 + expired 1 + ok 2 + secure 3 + } + + # Check if auth_level is sufficiently high + if { $levelv([ad_conn auth_level]) < $levelv($level) } { + return 0 + } + + return $untrusted_user_id } ad_proc -public auth::UseEmailForLoginP {} { @@ -58,6 +94,7 @@ } ad_proc -public auth::authenticate { + {-return_url ""} {-authority_id ""} {-username ""} {-email ""} @@ -68,6 +105,7 @@ Try to authenticate and login the user forever by validating the username/password combination, and return authentication and account status codes. + @param return_url If specified, this can be included in account status messages. @param authority_id The ID of the authority to ask to verify the user. Defaults to local authority. @param username Authority specific username of the user. @param email User's email address. You must supply either username or email. @@ -120,8 +158,6 @@ } } - ns_log Notice "LARS: authority_id = $authority_id, username = $username" - with_catch errmsg { array set result [auth::authentication::Authenticate \ -username $username \ @@ -206,8 +242,9 @@ # Map to row in local users table array set result [auth::get_local_account \ - -username $username \ - -authority_id $authority_id] + -return_url $return_url \ + -username $username \ + -authority_id $authority_id] # Returns: # result(account_status) # result(account_message) @@ -249,8 +286,11 @@ } # Issue login cookie if login was successful - if { [string equal $result(auth_status) "ok"] && [string equal $result(account_status) "ok"] && !$no_cookie_p } { - auth::issue_login -user_id $result(user_id) -persistent=$persistent_p + if { [string equal $result(auth_status) "ok"] && !$no_cookie_p } { + auth::issue_login \ + -user_id $result(user_id) \ + -persistent=$persistent_p \ + -account_status $result(account_status) } return [array get result] @@ -259,10 +299,14 @@ ad_proc -private auth::issue_login { {-user_id:required} {-persistent:boolean} + {-account_status "ok"} } { Issue the login cookie. } { - ad_user_login -forever=$persistent_p $user_id + ad_user_login \ + -account_status $account_status \ + -forever=$persistent_p \ + $user_id } ad_proc -private auth::get_register_authority { @@ -528,9 +572,20 @@ set element_info(optional) {} } + set local_required_elms { first_names last_name email } + set local_optional_elms {} + + switch [acs_user::ScreenName] { + require { + lappend local_required_elms "screen_name" + } + solicit { + lappend local_optional_elms "screen_name" + } + } + # Handle required elements for local account - # TODO: This will depend on a parameter - foreach elm { first_names last_name email } { + foreach elm $local_required_elms { # Add to required if { [lsearch $element_info(required) $elm] == -1 } { lappend element_info(required) $elm @@ -543,6 +598,13 @@ } } + foreach elm $local_optional_elms { + # Add to required + if { [lsearch $element_info(required) $elm] == -1 && [lsearch $element_info(optional) $elm] == -1 } { + lappend element_info(optional) $elm + } + } + return [array get element_info] } @@ -559,7 +621,6 @@ } ad_proc -public auth::get_registration_form_elements { - {-authority_id ""} } { Returns a list of elements to be included in the -form chunk of an ad_form form. All possible elements will always be present, but those that shouldn't be displayed @@ -615,7 +676,7 @@ secret_question {size 30} secret_answer {size 30} } - + array set element_info [auth::get_registration_elements] if { [lsearch $element_info(required) password] != -1 } { @@ -973,6 +1034,211 @@ } +ad_proc -public auth::set_email_verified { + {-user_id:required} +} { + Update an OpenACS record with the fact that the email address on + record was verified. +} { + acs_user::update \ + -user_id $user_id \ + -email_verified_p "t" +} + +ad_proc -private auth::verify_account_status {} { + Verify the account status of the current user, + and set [ad_conn account_status] appropriately. +} { + # Just recheck the authentication cookie, and it'll do the verification for us + sec_login_handler +} + + + + +##### +# +# auth namespace private procs +# +##### + +ad_proc -private auth::get_local_account { + {-return_url ""} + {-username:required} + {-authority_id ""} +} { + Get the user_id of the local account for the given + username and domain combination. + + @param username The username to find + + @param authority_id The ID of the authority to ask to verify the user. Leave blank for local authority. +} { + array set auth_info [list] + + # Will return: + # auth_info(account_status) + # auth_info(account_message) + # auth_info(user_id) + + if { [empty_string_p $authority_id] } { + set authority_id [auth::authority::local] + } + + set account_found_p [db_0or1row select_user_info { + select user_id, + email, + member_state, + email_verified_p, + screen_name + from cc_users + where username = :username + and authority_id = :authority_id + }] + + if { !$account_found_p } { + # Local user account doesn't exist + set auth_info(account_status) "closed" + auth::authority::get -authority_id $authority_id -array authority + + set auth_info(account_message) "You have successfully authenticated, but you do not have an account on [ad_system_name] yet.

" + + if { ![empty_string_p $authority(help_contact_text)] } { + append auth_info(account_message) "

Help Information

" + append auth_info(account_message) [ad_html_text_convert \ + -from $authority(help_contact_text_format) \ + -to "text/html" -- $authority(help_contact_text)] + } + + + return [array get auth_info] + } + + # Check local account status + array set auth_info [auth::check_local_account_status \ + -user_id $user_id \ + -return_url $return_url \ + -member_state $member_state \ + -email_verified_p $email_verified_p \ + -screen_name $screen_name] + + # Return user_id + set auth_info(user_id) $user_id + + return [array get auth_info] +} + +ad_proc -private auth::check_local_account_status { + {-return_url ""} + {-no_dialogue:boolean} + {-user_id:required} + {-member_state:required} + {-email_verified_p:required} + {-screen_name:required} +} { + Check the account status of a user with the given parameters. + + @param no_dialogue If specified, will not send out email or in other ways converse with the user + + @return An array-list with account_status and account_message + +} { + # Initialize to 'closed', because most cases below mean the account is closed + set result(account_status) "closed" + + # system_name is used in some of the I18N messages + set system_name [ad_system_name] + + switch $member_state { + approved { + if { $email_verified_p == "f" } { + if { !$no_dialogue_p } { + set result(account_message) "

[_ acs-subsite.lt_Registration_informat]

[_ acs-subsite.lt_Please_read_and_follo]

" + + with_catch errmsg { + auth::send_email_verification_email -user_id $user_id + } { + global errorInfo + ns_log Error "auth::get_local_account: Error sending out email verification email to email $email:\n$errorInfo" + set result(account_message) "We got an error sending out the email for email verification" + } + } + } else { + if { [string equal [acs_user::ScreenName] "require"] && [empty_string_p $screen_name] } { + set update_url [export_vars -no_empty -base "[subsite::get_element -element url]user/basic-info-update" { return_url {edit_p 1} }] + set result(account_message) "

Before we can let you in, you must setup a screen name.

»Update your profile now

" + } else { + set result(account_status) "ok" + } + } + } + banned { + set result(account_message) [_ acs-subsite.lt_Sorry_but_it_seems_th] + } + deleted { + set result(account_message) \ + "[_ acs-subsite.Welcome_Back_1] [_ acs-subsite.to_site_link_1]." + } + rejected - "needs approval" { + set result(account_message) \ + "

[_ acs-subsite.lt_registration_request_submitted]

[_ acs-subsite.Thank_you]

" + } + default { + set result(account_message) \ + "There was a problem authenticating the account. Most likely, the database contains users with no member_state." + ns_log Error "Problem with registration state machine: user_id $user_id has member_state '$member_state'" + } + } + + return [array get result] +} + +ad_proc -public auth::local_account_ok_p { + {-user_id:required} +} { + Return true or false (1 or 0) to whether the given user's account is ok. +} { + set ok_p 0 + catch { + acs_user::get -user_id $user_id -array user + array set result [auth::check_local_account_status \ + -user_id $user_id \ + -member_state $user(member_state) \ + -email_verified_p $user(email_verified_p) \ + -screen_name $user(screen_name)] + + set ok_p [expr [string equal $result(account_status) "ok"]] + } + return $ok_p +} + +ad_proc -private auth::get_user_secret_token { + -user_id:required +} { + Get a secret token for the user. Can be used for email verification purposes. +} { + return [db_string select_secret_token {}] +} + +ad_proc -private auth::send_email_verification_email { + -user_id:required +} { + Sends out an email to the user that lets them verify their email. + Throws an error if we couldn't send out the email. +} { + # These are used in the messages below + set token [auth::get_user_secret_token -user_id $user_id] + acs_user::get -user_id $user_id -array user + set confirmation_url [export_vars -base "[ad_url]/register/email-confirm" { token user_id }] + set system_name [ad_system_name] + + ns_sendmail \ + $user(email) \ + [parameter::get -parameter NewRegistrationEmailAddress -default [ad_system_owner]] \ + [_ acs-subsite.lt_Welcome_to_system_nam] \ + [_ acs-subsite.lt_To_confirm_your_regis] +} + ad_proc -private auth::validate_account_info { {-update:boolean} {-authority_id:required} @@ -1097,17 +1363,6 @@ } } -ad_proc -public auth::set_email_verified { - {-user_id:required} -} { - Update an OpenACS record with the fact that the email address on - record was verified. -} { - acs_user::update \ - -user_id $user_id \ - -email_verified_p "t" -} - ad_proc -private auth::can_admin_system_without_authority_p { {-authority_id:required} } { @@ -1136,138 +1391,6 @@ ##### # -# auth namespace private procs -# -##### - -ad_proc -private auth::get_local_account { - {-username:required} - {-authority_id ""} -} { - Get the user_id of the local account for the given - username and domain combination. - - @param username The username to find - - @param authority_id The ID of the authority to ask to verify the user. Leave blank for local authority. -} { - array set auth_info [list] - - # Will return: - # auth_info(account_status) - # auth_info(account_message) - # auth_info(user_id) - - if { [empty_string_p $authority_id] } { - set authority_id [auth::authority::local] - } - - set account_found_p [db_0or1row select_user_info { - select user_id, - email, - member_state, - email_verified_p - from cc_users - where username = :username - and authority_id = :authority_id - }] - - if { !$account_found_p } { - # Local user account doesn't exist - set auth_info(account_status) "closed" - auth::authority::get -authority_id $authority_id -array authority - - set auth_info(account_message) "You have successfully authenticated, but you do not have an account on [ad_system_name] yet.

" - - if { ![empty_string_p $authority(help_contact_text)] } { - append auth_info(account_message) "

Help Information

" - append auth_info(account_message) [ad_html_text_convert \ - -from $authority(help_contact_text_format) \ - -to "text/html" -- $authority(help_contact_text)] - } - - - return [array get auth_info] - } - - # Check local account status - - # Initialize to 'closed', because most cases below mean the account is closed - set auth_info(account_status) "closed" - - set notification_address [parameter::get -parameter NewRegistrationEmailAddress -default [ad_system_owner]] - - # system_name is used in some of the I18N messages - set system_name [ad_system_name] - switch $member_state { - approved { - if { $email_verified_p == "f" } { - set auth_info(account_message) "

[_ acs-subsite.lt_Registration_informat]

[_ acs-subsite.lt_Please_read_and_follo]

" - - with_catch errmsg { - auth::send_email_verification_email -user_id $user_id - } { - global errorInfo - ns_log Error "auth::get_local_account: Error sending out email verification email to email $email:\n$errorInfo" - set auth_info(account_message) "We got an error sending out the email for email verification" - } - - } else { - set auth_info(account_status) "ok" - } - } - banned { - set auth_info(account_message) [_ acs-subsite.lt_Sorry_but_it_seems_th] - } - deleted { - set auth_info(account_message) \ - "[_ acs-subsite.Welcome_Back_1] [_ acs-subsite.to_site_link_1]." - } - rejected - needs_approval { - set auth_info(account_message) \ - "

[_ acs-subsite.lt_registration_request_submitted]

[_ acs-subsite.Thank_you]

" - } - default { - set auth_info(account_message) \ - "There was a problem authenticating the account: $user_id. Most likely, the database contains users with no member_state." - ns_log Error "Problem with registration state machine: user_id $user_id has member_state '$member_state'" - } - } - set auth_info(user_id) $user_id - - return [array get auth_info] -} - -ad_proc -private auth::get_user_secret_token { - -user_id:required -} { - Get a secret token for the user. Can be used for email verification purposes. -} { - return [db_string select_secret_token {}] -} - -ad_proc -private auth::send_email_verification_email { - -user_id:required -} { - Sends out an email to the user that lets them verify their email. - Throws an error if we couldn't send out the email. -} { - # These are used in the messages below - set token [auth::get_user_secret_token -user_id $user_id] - acs_user::get -user_id $user_id -array user - set confirmation_url [export_vars -base "[ad_url]/register/email-confirm" { token user_id }] - set system_name [ad_system_name] - - ns_sendmail \ - $user(email) \ - [parameter::get -parameter NewRegistrationEmailAddress -default [ad_system_owner]] \ - [_ acs-subsite.lt_Welcome_to_system_nam] \ - [_ acs-subsite.lt_To_confirm_your_regis] -} - - -##### -# # auth::authentication # ##### Index: openacs-4/packages/acs-authentication/tcl/local-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-authentication/tcl/local-procs.tcl,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/acs-authentication/tcl/local-procs.tcl 16 Sep 2003 13:07:42 -0000 1.14 +++ openacs-4/packages/acs-authentication/tcl/local-procs.tcl 18 Sep 2003 17:12:17 -0000 1.15 @@ -373,7 +373,7 @@ } set result(required) [concat $result(required) { email first_names last_name }] - set result(optional) { screen_name url } + set result(optional) { url } if { ![parameter::get -parameter RegistrationProvidesRandomPasswordP -default 0] } { lappend result(optional) password Index: openacs-4/packages/acs-subsite/lib/login.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/login.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-subsite/lib/login.adp 4 Sep 2003 09:20:53 -0000 1.2 +++ openacs-4/packages/acs-subsite/lib/login.adp 18 Sep 2003 17:12:53 -0000 1.3 @@ -1,3 +1,5 @@ +@focus;noquote@ + @@ -7,3 +9,4 @@ Register + Index: openacs-4/packages/acs-subsite/lib/login.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/login.tcl,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-subsite/lib/login.tcl 18 Sep 2003 13:46:18 -0000 1.9 +++ openacs-4/packages/acs-subsite/lib/login.tcl 18 Sep 2003 17:12:53 -0000 1.10 @@ -26,6 +26,17 @@ set email {} } +set expired_p 0 +if { [empty_string_p $email] && [empty_string_p $username] && [ad_conn untrusted_user_id] != 0 } { + acs_user::get -user_id [ad_conn untrusted_user_id] -array untrusted_user + if { [auth::UseEmailForLoginP] } { + set email $untrusted_user(email) + } else { + set authority_id $untrusted_user(authority_id) + set username $untrusted_user(username) + } +} + # Persistent login # The logic is: # 1. Allowed if allowed both site-wide (on acs-kernel) and on the subsite @@ -82,9 +93,15 @@ set username_widget password } +set focus {} if { [auth::UseEmailForLoginP] } { ad_form -extend -name login -form [list [list email:text($username_widget) [list label "Email"]]] set user_id_widget_name email + if { ![empty_string_p $email] } { + set focus "password" + } else { + set focus "email" + } } else { if { [llength $authority_options] > 1 } { ad_form -extend -name login -form { @@ -97,7 +114,13 @@ ad_form -extend -name login -form [list [list username:text($username_widget) [list label "Username"]]] set user_id_widget_name username + if { ![empty_string_p $username] } { + set focus "password" + } else { + set focus "username" + } } +set focus "login.$focus" ad_form -extend -name login -form { {password:text(password) @@ -107,16 +130,17 @@ if { $allow_persistent_login_p } { ad_form -extend -name login -form { - {persistent_p:text(checkbox) + {persistent_p:text(checkbox),optional {label ""} {options { { "Remember my login on this computer" "t" } }} - {value {[ad_decode $default_persistent_login_p 1 "t" ""]}} } } } ad_form -extend -name login -on_request { - # Populate fields + # Populate fields from local vars + + set persistent_p [ad_decode $default_persistent_login_p 1 "t" ""] } -on_submit { if { ![exists_and_not_null authority_id] } { # Will be defaulted to local authority @@ -128,6 +152,7 @@ } array set auth_info [auth::authenticate \ + -return_url $return_url \ -authority_id $authority_id \ -email $email \ -username $username \ Index: openacs-4/packages/acs-subsite/lib/user-info.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/lib/user-info.tcl,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/acs-subsite/lib/user-info.tcl 17 Sep 2003 14:47:04 -0000 1.5 +++ openacs-4/packages/acs-subsite/lib/user-info.tcl 18 Sep 2003 17:12:53 -0000 1.6 @@ -2,14 +2,15 @@ # Expects: # user_id:optional # return_url:optional +# edit_p:optional # -ad_maybe_redirect_for_registration +auth::require_login -account_status closed if { ![exists_and_not_null user_id] } { - set user_id [ad_conn user_id] + set user_id [ad_conn untrusted_user_id] } else { - permission::require_permission -object_id $user_id -privilege admin + permission::require_permission -object_id $user_id -privilege admin -party_id $user_id } if { ![exists_and_not_null return_url] } { @@ -20,19 +21,19 @@ acs_user::get -user_id $user_id -array user -include_bio -set authority_name [auth::authority::get_element -authority_id $user(authority_id) -element pretty_name] +set authority [auth::authority::get_element -authority_id $user(authority_id) -element pretty_name] set form_elms { username first_names last_name email screen_name url bio } foreach elm $form_elms { - set mode($elm) {} + set elm_mode($elm) {} } set read_only_elements [auth::sync::get_sync_elements -authority_id $user(authority_id)] foreach elm $read_only_elements { - set mode($elm) {display} + set elm_mode($elm) {display} } set first_element {} foreach elm $form_elms { - if { [empty_string_p $mode($elm)] } { + if { [empty_string_p $elm_mode($elm)] } { set first_element $elm break } @@ -41,14 +42,19 @@ set read_only_notice_p [expr [llength $read_only_elements] > 0] set edit_mode_p [expr ![empty_string_p [form::get_action user_info]]] -ad_form -name user_info -cancel_url $return_url -action $action_url -mode display -form { +set form_mode display +if { [exists_and_equal edit_p 1] } { + set form_mode edit +} + +ad_form -name user_info -cancel_url $return_url -action $action_url -mode $form_mode -form { {user_id:integer(hidden),optional} {return_url:text(hidden),optional {value $return_url}} } if { [llength [auth::authority::get_authority_options]] > 1 } { ad_form -extend -name user_info -form { - {authority_name:text(inform) + {authority:text(inform) {label "Authority"} } } @@ -57,41 +63,52 @@ ad_form -extend -name user_info -form { {username:text(text) {label "Username"} - {mode $mode(username)} + {mode $elm_mode(username)} } } } +# TODO: Use get_registration_form_elements ... + + ad_form -extend -name user_info -form { {first_names:text {label "First names"} {html {size 50}} - {mode $mode(first_names)} + {mode $elm_mode(first_names)} } {last_name:text {label "Last Name"} {html {size 50}} - {mode $mode(last_name)} + {mode $elm_mode(last_name)} } {email:text {label "Email"} {html {size 50}} - {mode $mode(email)} + {mode $elm_mode(email)} } - {screen_name:text,optional - {label "Screen name"} - {html {size 50}} - {mode $mode(screen_name)} - } +} + +if { ![string equal [acs_user::ScreenName] "none"] } { + ad_form -extend -name user_info -form [list \ + [list screen_name:text[ad_decode [acs_user::ScreenName] "solicit" ",optional" ""] \ + {label "Screen name"} \ + {html {size 50}} \ + {mode $elm_mode(screen_name)} \ + ]] +} + + +ad_form -extend -name user_info -form { {url:text,optional {label "Home Page"} {html {size 50}} - {mode $mode(url)} + {mode $elm_mode(url)} } {bio:text(textarea),optional {label "About yourself"} {html {rows 8 cols 60}} - {mode $mode(bio)} + {mode $elm_mode(bio)} {display_value {[ad_text_to_html -- $user(bio)]}} } } -on_request { @@ -102,7 +119,7 @@ set user_info(authority_id) $user(authority_id) set user_info(username) $user(username) foreach elm $form_elms { - if { [empty_string_p $mode($elm)] && [info exists $elm] } { + if { [empty_string_p $elm_mode($elm)] && [info exists $elm] } { set user_info($elm) [string trim [set $elm]] } } @@ -132,6 +149,10 @@ } } } -after_submit { + if { [string equal [ad_conn account_status] "closed"] } { + auth::verify_account_status + } + ad_returnredirect $return_url ad_script_abort } Index: openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl,v diff -u -N -r1.6 -r1.7 --- openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl 17 Sep 2003 12:13:25 -0000 1.6 +++ openacs-4/packages/acs-subsite/tcl/subsite-procs.tcl 18 Sep 2003 17:12:53 -0000 1.7 @@ -348,7 +348,7 @@ # TODO: add an image # TODO: add link_p/selected_p for subsections - set base_url [site_node_closest_ancestor_package_url] + set base_url [subsite::get_element -element url] template::multirow create $sections_multirow name label title url selected_p link_p @@ -409,7 +409,7 @@ set info(url) "[string range $info(url) 0 [string last / $info(url)]]." } - if { [ad_conn node_id] == [ad_conn subsite_id] } { + if { [ad_conn node_id] == [site_node_closest_ancestor_package "acs-subsite"] } { set current_url [ad_conn extra_url] } else { # Need to prepend the path from the subsite to this package @@ -513,7 +513,7 @@ } } - set subsite_url [site_node_closest_ancestor_package_url] + set subsite_url [subsite::get_element -element url] array set subsite_sitenode [site_node::get -url $subsite_url] set subsite_node_id $subsite_sitenode(node_id) @@ -528,7 +528,7 @@ selected_patterns *] } - if { [permission::permission_p -object_id [ad_conn subsite_id] -privilege admin] } { + if { [permission::permission_p -object_id [site_node_closest_ancestor_package "acs-subsite"] -privilege admin] } { lappend pageflow admin { label "Administration" url "admin/configure" Index: openacs-4/packages/acs-subsite/www/register/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/register/index.adp,v diff -u -N -r1.13 -r1.14 --- openacs-4/packages/acs-subsite/www/register/index.adp 16 Sep 2003 13:08:38 -0000 1.13 +++ openacs-4/packages/acs-subsite/www/register/index.adp 18 Sep 2003 17:12:53 -0000 1.14 @@ -1,6 +1,9 @@ #acs-subsite.Log_In# - @focus@ {#acs-subsite.Log_In#} - + + Note: Your login has expired. Please retype your password to continue working. + + + Index: openacs-4/packages/acs-subsite/www/register/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/register/index.tcl,v diff -u -N -r1.8 -r1.9 --- openacs-4/packages/acs-subsite/www/register/index.tcl 16 Sep 2003 13:08:38 -0000 1.8 +++ openacs-4/packages/acs-subsite/www/register/index.tcl 18 Sep 2003 17:12:53 -0000 1.9 @@ -8,4 +8,7 @@ {return_url ""} } -set focus [auth::get_login_focus] +set expired_p 0 +if { [string equal [ad_conn auth_level] "expired"] } { + set expired_p 1 +} Index: openacs-4/packages/acs-subsite/www/user/basic-info-update.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/user/basic-info-update.adp,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-subsite/www/user/basic-info-update.adp 17 Sep 2003 14:25:54 -0000 1.9 +++ openacs-4/packages/acs-subsite/www/user/basic-info-update.adp 18 Sep 2003 17:12:54 -0000 1.10 @@ -4,5 +4,5 @@

#acs-subsite.Basic_Information#

- + Index: openacs-4/packages/acs-subsite/www/user/basic-info-update.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/user/basic-info-update.tcl,v diff -u -N -r1.6 -r1.7 --- openacs-4/packages/acs-subsite/www/user/basic-info-update.tcl 17 Sep 2003 14:25:54 -0000 1.6 +++ openacs-4/packages/acs-subsite/www/user/basic-info-update.tcl 18 Sep 2003 17:12:54 -0000 1.7 @@ -8,14 +8,16 @@ } { {return_url ""} {user_id ""} + {edit_p 0} } set page_title "Update Basic Information" -if { [empty_string_p $user_id] || ($user_id == [ad_conn user_id]) } { +if { [empty_string_p $user_id] || ($user_id == [ad_conn untrusted_user_id]) } { set context [list [list [ad_pvt_home] [ad_pvt_home_name]] $page_title] } else { set context [list $page_title] } set focus {} +