| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
redactor 22.09.2003 21:42
<DIV> уже закрыл.@user[content]
^if(!def $form:login && !def $form:password){
^if(!def $cookie:login && !def $cookie:session){
#если не логинится и нет куков с логином и сессией, то показать форму входа
^login_form[]
}{
#иначе лезем в базу, где выбираем пользователя по логину и его состоянию(1-вкл, 0 - выкл.)
^connect[$connect_string]{
$user_user[^table::sql{select id, name, password, last_time, now, perms, sess from users where login='$cookie:login' and stat="1" }]
#Если кука с сессией нашлась, но не равна сессии в базе, то
^if("$cookie:session" ne "$user_user.sess"){
#Показываем форму
^login_form[]
}{
#Иначе показываем то, что скрыто под авторизацией
$content
}
}
}
}{
#Лезем в базу и ищем пароль, соответствующий логину (смотрим только среди включенных юзеров)
^connect[$connect_string]{
$user_auth[^table::sql{select id, name, password, login, last_time, now, perms, sess from users where login='$form:login' and stat='1' }]
#Если запрос чего-то вернул - смотрим чего он там нам принес
^if(def $user_auth){
#Проверяем соответствует ли пароль из базы паролю, введенному в поле
#Нижеследующее после отладки стоит проверять ч\з ^math:md5[строка]
^if($form:password eq $user_auth.password){
#Записываем идентификатор и дату в таблицу к юзеру и записываем дату из нау меняем в ласт
$now[^date::now[]]
#создаем уникальный айди для сессии
$session[^math:uuid[]]
^void:sql{UPDATE users SET sess= '$session', last_time='$user_auth.now', now='^now.sql-string[]' WHERE login='$user_auth.login'}
# Пишем айди в куку
$cookie:session[
$.value[$session]
$.expires[session]
]
#Кладем куки с логином юзера
$cookie:login[
$.value[$user_auth.login]
]
$content
}{
^login_form[<font color="#FF0000">Ошибка! Пробуйте еще раз.</font>]
}
}{
^login_form[<font color="#FF0000">Ошибка! Пробуйте еще раз.</font>]
}
}
}Это - @perms[] @perms[user;operator;administrator]
^if(def $cookie:login && def $cookie:session){
# лезем в базу, где выбираем пользователя по логину и его состоянию(1-вкл, 0 - выкл.)
^connect[$connect_string]{
$user[^table::sql{select id, name, password, last_time, now, perms, sess from users where login='$cookie:login' and stat="1" }]
#Если кука с сессией нашлась, но не равна сессии в базе, то
^if("$cookie:session" ne "$user.sess"){
#Тишина
}{
#Иначе показываем то, что скрыто под авторизацией
$reg_switch[^switch[$user.perms]{
#Читаем права пользователя их всего 3 - пользователь(минимум), оператор(немного больше), администратор(полный контроль)
^case[1]{$administrator}
#Права админа
^case[2]{$operator}
#Права оператора
^case[DEFAULT]{$user}
#Ну и, наконец, права простого пользователя
}]
$reg_switch
}
}
}