summaryrefslogtreecommitdiffstats
path: root/apps/admin/lib/myLoginValidator.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/admin/lib/myLoginValidator.php')
-rw-r--r--apps/admin/lib/myLoginValidator.php45
1 files changed, 45 insertions, 0 deletions
diff --git a/apps/admin/lib/myLoginValidator.php b/apps/admin/lib/myLoginValidator.php
new file mode 100644
index 0000000..03890aa
--- /dev/null
+++ b/apps/admin/lib/myLoginValidator.php
@@ -0,0 +1,45 @@
+<?php
+
+class myLoginValidator extends sfValidator
+{
+ public function initialize($context, $parameters = null)
+ {
+ // initialize parent
+ parent::initialize($context);
+
+ // set defaults
+ $this->setParameter('login_error', 'Invalid input');
+
+ $this->getParameterHolder()->add($parameters);
+
+ return true;
+ }
+
+ public function execute(&$value, &$error)
+ {
+ $password_param = $this->getParameter('password');
+ $password = $this->getContext()->getRequest()->getParameter($password_param);
+
+ $login = $value;
+
+ $c = new Criteria();
+ $c->add(UserPeer::NICKNAME, $login);
+ $user = UserPeer::doSelectOne($c);
+
+ // nickname exists?
+ if ($user)
+ {
+ // password is OK?
+ if (sha1($user->getSalt().$password) == $user->getSha1Password())
+ {
+ $this->getContext()->getUser()->signIn($user);
+ return true;
+ }
+ }
+
+ $error = $this->getParameter('login_error');
+ return false;
+ }
+}
+
+?>