ID пользователя
Dec. 29th, 2016 09:03 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Немного поразмыслив, решил не использовать userid который мне подсовывает гугл, а формировать его самому, на основе пользовательского мэйла.
Какая в принципе разница?
Разница проявится, если я перейду на другой хостинг, или просто откажусь от гугловской аутенфикации в пользу собственной системы или OpenID. Если я формирую userid сам, то это не вызовет ни малейших проблем. Максимум, что придется сделать, это разослать всем юзверям новые пароли, а в качестве имени пользователя они будут использовать свой емэйл. А если я использую id от гугла, то оказываюсь в глубокой заднице. Взять его больше неоткуда, а на него завязано очень многое. В том виде как оно есть, пользователи разом теряют доступ ко всем своим данным – поскольку данные ищутся по ключу, а ключом выступает… вы правильно догадались, userid.
Вылечить можно, но придется ваять какой-то скрипт-конвертер, который заглянет в каждый файл с профилем пользователя, достанет оттуда мэйл, сформирует новый ключ и переименует все файлы, в полном названии которых присутствует старый. Вишенка на торте: при этом поменяются адреса всех пользовательских страниц. Активные пользователи этому факту очень обрадуются.
Хорошо что пока у меня пользователей 2 штуки – я и анонимус, а пользовательских данных нет вообще.
Хорошо, что всех изменений – одна строка.
$user->getUserId();
поменял на
md5($user->getEmail());
P.S. Подумал еще немного и поменял на
md5(strtolower($user->getEmail()));
А то мало ли…
P.P.S. И точно. Гугл возвращает имя пользователя так, как оно было указано при создании аккаунта. Например Mr.John.Smith@gmail.com. Сам пользователь может ввести его как бог на душу положит, уверенный что большие и маленькие буквы не различаются. И это действительно так – для почты. Но у меня ID будет зафиксирован для изначального вида! и md5(Mr.John.Smith@gmail.com)!=md5(mr.john.smith@gmail.com). Поэтому уже сейчас все нужно привести к единому знаменателю.