parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Да-да-да

redactor 22.09.2003 21:42

<DIV> уже закрыл.

@user[]
@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
}
}
}