parser

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

 

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

Ответ

Артем Карявка (SmArt) 29.08.2007 17:04

Функция, которая сохраняет и раздает кукисы...
####################################################################
# Вход в систему
@login[][tUser;sSession;sPath;sMessage]
^if(!^logged[]){
	^if(def $form:login && def $form:passwd){
		$tUser[^passport:loadByLogin[$form:login]]
		^if(def $tUser){
			^if(^math:crypt[$form:passwd;$tUser.passwd] eq $tUser.passwd){
				$sSession[^math:crypt[$form:login;^$apr1^$]]
				$cookie:session[$.value[$sSession]$.domain[$MAIN:DOMAIN]^if(def $form:remember){$.expires(14)}{$.expires[session]}]
				^sessionSet[$form:login;$sSession]
				$sPath[^default[$form:path;/${MAIN:LANG}/]]
				$sMessage[^default[$MAIN:PASSPORT_TEXT_WELCOME;Добро пожаловать], ^auth:userFullname[]]
				<table width="100%" border="0" cellspacing="4" cellpadding="5" class="content">
					<tr>
						<td><h1>$sMessage</h1></td>
					</tr>
				</table>
#				$response:refresh[$.value[0]$.url[$path]]
				^jsAction[$sMessage;$sPath]
			}{
				$sMessage[^default[$MAIN:PASSPORT_TEXT_DONTPASS;Неверная пара логин-пароль]]
				^formLogin[$sMessage]
				^jsAction[$sMessage]
			}
		}{
			$sMessage[^default[$MAIN:PASSPORT_TEXT_DONTPASS;Нет такого пользователя или пароля]]
			^formLogin[$sMessage]
			^jsAction[$sMessage]
		}
	}{
		^if(!def $form:login){
			$sMessage[Не введен логин]
		}
		^if(!def $form:passwd){
			$sMessage[Не введен пароль]
		}
		^formLogin[]
	}
}{
	$sMessage[^default[$MAIN:PASSPORT_TEXT_LOGIN;Вы авторизированы], ^auth:userFullname[]]
	<table width="100%" border="0" cellspacing="4" cellpadding="5" class="content">
		<tr>
			<td><h1>$sMessage</h1></td>
		</tr>
	</table>
	^jsAction[$sMessage]
}
# end @login[]

####################################################################
# Установка сессии
@sessionSet[sLogin;sSession]
^if(def $sLogin && def $sSession){
	^MAIN:pSQL.void{
		UPDATE
			${MAIN:DB_NAME}_${sTABLE}
		SET
			`session`='$sSession'
		WHERE
			`nickname` = '$sLogin'
	}
}
# end @sessionSet[]

####################################################################
# Очистка сессии
@sessionClear[sSession]
$sSession[^default[$sSession;$cookie:session]]
^if(def $sSession){
	^MAIN:pSQL.void{
		UPDATE
			${MAIN:DB_NAME}_${sTABLE}
		SET
			`session`=''
		WHERE
			`session` = '$sSession'
	}
}
# end @sessionClear[]