Jump to content
  • 0

Wymuszenie zmiany adresu e-mail po zalogowaniu.


4axis

Question

Witam.
Chciałbym Was zapytać czy jest możliwe wymuszenie jednorazowej zmiany e-maila po pierwszym zalogowaniu. Dane do logowanie będą wysyłane sms-em, adres e-mail przy urzytkowniku będzie tymczasowy. Nie wiem czy któraś z opcji jest możliwa do zaiplementowania:
1. Adres e-mail jest czyszczony przy pierwszym zalogowaniu klienta i musi on go uzupełnić.

2. Jest wczytywany tymczasowy adres pobierany z tabeli np. [email protected] i zostaje on przed wyśiwetleniem w  polu e-mail zamieniany na tekst "Uzupełnij adres e-mail", fukcja byłaby ustawiona tylko dla tego maila

 

Dzięki i pozdrawiam

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Jest możliwe.

 

1. Ustawiasz losowy adres e-mail i wpis bazie danych np. is_default_email = 1

2. Kierujesz usera do strony gdzie ma zmienić e-mail.

3. Jeżeli zmienił to zapisujesz i ustawiasz is_default_email = 0

4. Jeżeli zamknął przeglądarkę to masz odpowiedź, że po zalogowaniu musisz sprawdzać czy is_default_email = 1, jeśli tak to wracasz do punktu 2

Link to comment
Share on other sites

  • 0

:) , dzięki z info. A dałoby się to zastosować na stronie "Twoje dane osobiste (identity)" tak żeby nie zmieniać bazy danych? tylko wybierając rekord np WHERE i wtedy podmienić to kodem na coś innego?

Link to comment
Share on other sites

  • 0

Nie musisz zmieniać bazy danych, możesz sobie zrobić drugą tabelę np. mycustomer_details i tam sobie trzymać to co Cię interesuje id_customer i is_default_email

 

Ciężko by przedstawić gotowe rozwiązanie bo to dość złożona sprawa ale na pewno wszystko to można osiągnąć, nawet bez zmiany bazy danych, nawet używając hooków, które występują przy logowaniu/po rejestracji oraz poprzez Override np. IdentityController

Link to comment
Share on other sites

  • 0

Zrobiłem to tak:

Plik IdentityController.php

zmieniłem kod:

	else
{
$email = trim(Tools::getValue('email'));
$this->customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
if (isset($_POST['old_passwd']))
$_POST['old_passwd'] = trim($_POST['old_passwd']);

if (!Validate::isEmail($email))
$this->errors[] = Tools::displayError('This email address is not valid');

na kod:

else
			{
				$defemail = ('[email protected]'); // dodane
				$email = trim(Tools::getValue('email'));
				$this->customer->birthday = (empty($_POST['years']) ? '' : (int)$_POST['years'].'-'.(int)$_POST['months'].'-'.(int)$_POST['days']);
				if (isset($_POST['old_passwd']))
					$_POST['old_passwd'] = trim($_POST['old_passwd']);
				if ($email === $defemail) // dodane
					$this->errors[] = Tools::displayError('This email address is not valid');// dodane
				elseif (!Validate::isEmail($email))

Wystarczy zmienić tekst błędu i działa ;)

 

Trzeba oczywiście przykładowy email wpisać klientowi na konto, w moim przypadku [email protected]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...