Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klucz aktywacji konta nowego usera
skabszo
post 10.03.2012, 18:22:38
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 27.08.2004

Ostrzeżenie: (0%)
-----


Witajcie,

Próbowałem edytować nieco plugin wordpressowy Theme my login ( dla zainteresowanych link do ww. http://wordpress.org/extend/plugins/theme-my-login/).

Chodzi oto, że mamy do wyboru następujące sposoby aktywacji nowych userów - automatyczna aktywacja konta, kliknięcie w link przez usera, aktywacja przez admina (należy się zalogować i zatwierdzić konto poprzez zmianę roli/statusu nowego usera).

Zależy mi by tak naprawdę połączyć dwa ostatnie tj. nadal za aktywację konta odpowiada admin, ale to admin otrzymuje link w który trzeba kliknąć - czyli po prostu bez potrzeby logowania klikamy i aktywujemy konto.

Odnalazłem plik odpowiedzialny za aktywację: http://wklejto.pl/119680

Wydawało mi się, że wystarczy edytować fragment:
  1. function moderate_user( $user_id, $user_pass ) {
  2. global $wpdb;
  3.  
  4. // Set user role to "pending"
  5. $user = new WP_User( $user_id );
  6. $user->set_role( 'pending' );
  7.  
  8. // Temporarily save plaintext pass
  9. if ( isset( $_POST['user_pass'] ) )
  10. update_user_meta( $user_id, 'user_pass', $_POST['user_pass'] );
  11.  
  12. // Send appropriate e-mail depending on moderation type
  13. if ( 'email' == $GLOBALS['theme_my_login']->options->get_option( array( 'moderation', 'type' ) ) ) { // User activation
  14. // Generate an activation key
  15. $key = wp_generate_password( 20, false );
  16. // Set the activation key for the user
  17. $wpdb->update( $wpdb->users, array( 'user_activation_key' => $key ), array( 'user_login' => $user->user_login ) );
  18. // Send activation e-mail
  19. $this->new_user_activation_notification( $user_id, $key );
  20. } elseif ( 'admin' == $GLOBALS['theme_my_login']->options->get_option( array( 'moderation', 'type' ) ) ) { // Admin approval
  21. // Send approval e-mail
  22. $this->new_user_approval_admin_notification( $user_id );
  23. }
  24. }
tylko kurcze nie bardzo teraz wiem co zrobić. Macie jakiś pomysł gdzie dokonać zmiany? próbowałem edytować linijkę $this->new_user_approval_admin_notification( $user_id ); ale bez skutku.. mail dalej dochodzi z linkiem do logowania się admina.;/
Go to the top of the page
+Quote Post
Uriziel01
post 10.03.2012, 18:27:44
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Najprościej będzie tak.
Zrób sobie nową metodę gdyż zazwyczaj nie warto palić za Sobą mostów (nigdy nie wieszy czy tamta metoda Ci się kiedyś nie przyda.
następnie w tej metodzie połącz zawartość metod: new_user_activation_notification oraz new_user_approval_admin_notification, na przykład tak:
  1. $user = new WP_User( $user_id );
  2.  
  3. $user_login = stripslashes( $user->user_login );
  4. $user_email = stripslashes( $user->user_email );
  5.  
  6. if ( function_exists( 'is_multisite' ) && is_multisite() ) {
  7. $blogname = $GLOBALS['current_site']->site_name;
  8. } else {
  9. // The blogname option is escaped with esc_html on the way into the database in sanitize_option
  10. // we want to reverse this for the plain text arena of emails.
  11. $blogname = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
  12. }
  13.  
  14. $title = sprintf( __( '[%s] New User Awaiting Approval', 'theme-my-login' ), $blogname );
  15. $activation_url = add_query_arg( array( 'action' => 'activate', 'key' => $key, 'login' => rawurlencode( $user_login ) ), wp_login_url() );
  16.  
  17. $message = sprintf( __( 'Thanks for registering at %s! To complete the activation of user account please click the following link: ', 'theme-my-login' ), $blogname ) . "\r\n\r\n";
  18. $message .= $activation_url . "\r\n";
  19.  
  20. $title = apply_filters( 'user_approval_admin_notification_title', $title, $user_id );
  21. $message = apply_filters( 'user_approval_admin_notification_message', $message, $user_id );
  22.  
  23. $to = apply_filters( 'user_approval_admin_notifcation_mail_to', get_option( 'admin_email' ) );
  24.  
  25. @wp_mail( $to, $title, $message );


Od razu mówię że nie mam pojęcia czy to działa gdyż nie mam teraz nigdzie WP aby to sprawdzać, kod pisany na kolanie i przedstawia tylko koncept.
Go to the top of the page
+Quote Post
skabszo
post 10.03.2012, 21:47:11
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 27.08.2004

Ostrzeżenie: (0%)
-----


tak się zastanawiam, gdzie może tkwić problem jeżeli nawet w przypadku, w którym mail dochodzi, są dane i link z kluczem ale wejście w link nic nie daje tzn nie aktywuje to konta..
Go to the top of the page
+Quote Post
Uriziel01
post 11.03.2012, 00:11:58
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


No ja bez bicia mogę się przyznać że miałem bardzo mało wspólnego z WP (trzeba by te braki nadrobić ale zawsze jest coś bardziej pilnego) i nie bardzo mogę ci jakoś pomóc, możesz ewentualnie pokusić się o znalezienie w bazie tabeli użytkowników i wyszukanie kolumny z tym kluczem aktywacyjnym, możesz wtedy sprawdzić czy klucze są zgodne.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 21:57