<?php

namespace app\controller;
use support\Request;
use Webman\Captcha\CaptchaBuilder;
use support\View;
use Respect\Validation\Validator as v;
use support\Redis;


class login
{
    public function index(Request $request)
    {
        $to=$request->get('to', '/');
        View::assign('to', $to);
        return view('login');
    }
    
    public function check(Request $request)
    {
        $name = $request->post('name','0');
        $password = $request->post('password','0');
        $usernameValidator = v::StringType()->noWhitespace()->length(1, 15);
        try {
            $usernameValidator->setName('用户名')->check($name);
        } catch (ValidationException $exception) {
            return json(['code'=>500, 'msg'=>$e->getMessage()]); 
        }
        try {
            $usernameValidator->setName('密码')->check($password);
        } catch (ValidationException $exception) {
            return json(['code'=>500, 'msg'=>$e->getMessage()]); 
        }
        $redis = Redis::connection('default');
        $userinfo=$redis->hget('User',"$name");
        if($userinfo===false){
            return json(['code'=>501, 'msg'=>'No Such Username']); 
        }
        $realpass=json_decode($userinfo)->passwd;
        echo ($realpass."\n".hash("sha256", $password)."\n".hash("sha256", 'admin123456'));
        if(hash("sha256", $password)==$realpass){
            $session = $request->session();
            $session->set('userinfo', $userinfo);
            $to = $request->post('to','/admin');
            return json(['code'=>200, 'msg'=>'Login Successfully']); 
        }else{
            return json(['code'=>502, 'msg'=>'Auth Failed']); 
        }


        return json(['code'=>999, 'msg'=>'Unknown Problem']); 
    }

}