Форумы / National / Russian / Тех. поддержка / РЕШЕНО Нотификации пользователю один раз после логина

Kopusha
#1 02.06.2023 07:23

Мне необходимо показать пользователю нотификации один раз после входа на сайт, далее при перемещении по сайту уже не проверять их, при logout и затем login по новой.

Самое простое и тупое решение - создать в cot_users поле user_new_log = 0, при входе на сайт проверять если 0 то показывать и если перешел на какую то страницу другую 0=1 А при логаут сбрасывать на 0.

Но конечно это стоит делать через хук, который позоволяет это сделать без танцев с бубной. Посмотрел в login.php все - их там много

Мне нужно несколькими запросами sql опросить достаточно большой обьем БД, каким из хуков в наличии лучше это сделать.

users.auth.first Хук в начале кода
users.auth.check Авторизация пользователя - начало
users.auth.check.done Авторизация пользователя - успешно
 

По логике - users.auth.check.done, но всегда могут быть нюансы, лучше спросить старожилов на стадии разработки чем поиметь проблему. 

Заранее спасибо.

Отредактировано: Kopusha (03.06.2023 06:26, 9 месяцев назад)
webitproff
#2 02.06.2023 07:44
#46815 Kopusha:

Мне необходимо показать пользователю нотификации один раз после входа на сайт, ....

если я правильно понял о чем речь,

то хотелось бы реализовать в виде плагина,

где в настройках можно указать сколько раз показывать это сообщение, например:

1. пользователь толькочто зарегистрировался,

2. при первой, второй или пятой авторизации получает сообщение в модалке

"вы в курсе что Земля круглая?" или "Авторизуясь, - вы поделились своими личными данными!"

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Kabak
#3 02.06.2023 08:14

hook users.auth.check.done срабатывает когда пользователь только что прошёл авторизацию на сайте 

Kopusha
#4 02.06.2023 12:18

user_logcount это немного другое.

Вопрос был по какому хуку постоянно при входе на сайт собирать достаточно много данных и показывать, и почему. Там три хука (вроде как) отвечающие этому условию, но явно не все так просто.

Kabak
#5 02.06.2023 12:23

собирать достаточно много данных и показывать

Что вы имееете ввиду ?

 

hook users.auth.check.done  выстреливает как только пользователь прошёл идентификацию - ввёл свои данные и сайт их проверил.

Kopusha
#6 02.06.2023 17:19

Я хочу например понять разницу .done и .main

Kabak
#7 02.06.2023 17:27

users.auth.main Хук до определения тэгов 

Я не могу понять, почему так упорно не возвращают встроенный или рабочий поиск на сайте   ( постоянно искать через опу )  И люди не могут найти ответы

https://www.cotonti.com/docs/ru/plugins/Spisok_i_opisanie_hukov

 

Отредактировано: Kabak (02.06.2023 17:43, 10 месяцев назад)
Kopusha
#8 02.06.2023 18:50

Я это все пинимаю. Вопрос другой.

Мне нужно несколькими запросами sql опросить достаточно большой обьем БД, каким из хуков в наличии лучше это сделать.

users.auth.first Хук в начале кода
users.auth.check Авторизация пользователя - начало
users.auth.check.done Авторизация пользователя - успешно
 

По логике - users.auth.check.done, но всегда могут быть нюансы, лучше спросить старожилов на стадии разработки чем поиметь проблему. 

Kabak
#9 02.06.2023 18:54

Задача секретна и вы не хотите чётко сформулировать что вам нужно сделать ?

 

Старожилы вам ответет то же самое : нужно чёткое понимание , что вам необходимо проделать.

Kopusha
#10 02.06.2023 19:29

Что вы не поняли в задаче?

По сути и задачи то нет никакой. Вопрос в другом.

Dayver
#11 03.06.2023 00:45

Дважды

#46815 Kopusha:

По логике - users.auth.check.done, но всегда могут быть нюансы, 

О каких нюансах вы беспокоитесь?

 

#46825 Kopusha:

Я хочу например понять разницу .done и .main

Разница проста, зайдя на страницу авторизации (просто что бы показать страницу авторизации) отработает код в котором будет опрошена только цепочка хуков: 

users.auth.first
users.auth.main
users.auth.tags

.. это если говорить только о тех которые в login.php

Если же на странице авторизации ввести логин и пароль и отправить форму тогда если все данные пользователя верны и нет никаких банов и запретов то отработает только цепочка

users.auth.first
users.auth.check
users.auth.check.query
users.auth.check.done

после которой произойдёт редирект ( в зависимости от настроек или на главную или еще куда то) и ни users.auth.main ни users.auth.tags не отработают. Потому логично же что нужно использовать последний users.auth.check.done который будет иницироват только в случае успешного логина буквально перед самим редиректом.

 

#46815 Kopusha:

Самое простое и тупое решение - создать в cot_users поле user_new_log = 0, при входе на сайт проверять если 0 то показывать и если перешел на какую то страницу другую 0=1 А при логаут сбрасывать на 0.

Зачем вообще сохранять что то в базе если для этого достаточно сохранить в куках\локальном хранилище факт успешного входа и первого показа уведомления?

Pavlo Tkachenko aka Dayver
Kopusha
#12 03.06.2023 06:26

Спасибо.