Index: openacs-4/packages/acs-subsite/www/register/restore-user.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/register/restore-user.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/acs-subsite/www/register/restore-user.tcl 7 Nov 2002 18:06:57 -0000 1.3 +++ openacs-4/packages/acs-subsite/www/register/restore-user.tcl 19 Sep 2003 14:45:39 -0000 1.4 @@ -2,50 +2,34 @@ The page restores a user from the deleted state. @cvs-id $Id$ } { - user_id:naturalnum -} -properties { - site_link:onevalue - export_vars:onevalue - email:onevalue + {return_url {[ad_pvt_home]}} } -if {![db_0or1row user_state_info { - select member_state, email, rel_id from cc_users where user_id = :user_id -}]} { - ad_return_error "[_ acs-subsite.lt_Couldnt_find_your_rec]" "[_ acs-subsite.lt_User_id_user_id_is_no_3]" - return -} +set page_title [_ acs-subsite.lt_Your_Account_is_Resto] +set context [list [list [ad_pvt_home] [ad_pvt_home_name]] $page_title] -if { $member_state == "deleted" } { - - # they presumably deleted themselves - # Note that the only transition allowed if from deleted - # to authorized. No other states may be restored +# We do require authentication, though their account will be closed +set user_id [auth::require_login -account_status closed] - db_dml member_state_authorized_transistion { - update membership_rels - set member_state = 'approved' - where rel_id = :rel_id +set member_state [acs_user::get_element -user_id $user_id -element member_state] + +switch $member_state { + deleted { + + # They presumably deleted themselves + # Note that the only transition allowed if from deleted + # to authorized. No other states may be restored + + acs_user::approve -user_id $user_id + } + approved { + # May be a double-click } - -} else { - ad_return_error "[_ acs-subsite.lt_Problem_with_authenti]" "[_ acs-subsite.lt_There_was_a_problem_w]" + default { + ad_return_error "[_ acs-subsite.lt_Problem_with_authenti]" "[_ acs-subsite.lt_There_was_a_problem_w]" + } } -set site_link [ad_site_home_link] +auth::verify_account_status -# One common problem with login is that people can hit the back button -# after a user logs out and relogin by using the cached password in -# the browser. We generate a unique hashed timestamp so that users -# cannot use the back button. - -set time [ns_time] -set token_id [sec_get_random_cached_token_id] -set token [sec_get_token $token_id] -set hash [ns_sha1 "$time$token_id$token"] - -set export_vars [export_form_vars return_url time token_id hash email] - -set email_password_url "email-password.tcl?user_id=$user_id" - -ad_return_template +set site_link [ad_site_home_link]