Exemplo n.º 1
0
        public async Task <IActionResult> Login(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = "login")]
            HttpRequest req
            )
        {
            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            JObject data        = JsonConvert.DeserializeObject <JObject>(requestBody);

            Deliverer deliverer = _deliverersRepository.Read((string)data["emailAddress"]);

            if (
                deliverer is object &&
                !deliverer.IsLoggedIn() &&
                deliverer.PasswordMatches((string)data["password"])
                )
            {
                deliverer.LogIn();

                if (_deliverersRepository.Update(deliverer))
                {
                    return(new OkObjectResult(deliverer));
                }
                else
                {
                    return(new StatusCodeResult(500));
                }
            }
            else
            {
                return(new UnauthorizedResult());
            }
        }
        public async Task <IActionResult> UpdateMe(
            [HttpTrigger(AuthorizationLevel.Function, "put", Route = "me")]
            HttpRequest req
            )
        {
            try {
                string    token     = _authService.getTokenFromHeader(req.Headers["Authorization"]);
                Deliverer deliverer = await _deliverersRepository.GetDelivererByToken(token);

                if (token == deliverer.Token)
                {
                    string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                    JObject data        = JsonConvert.DeserializeObject <JObject>(requestBody);

                    deliverer.EmailAddress = (string)data["emailAddress"];
                    deliverer.PhoneNumber  = (string)data["phoneNumber"];
                    deliverer.DateOfBirth  = (DateTime)data["dateOfBirth"];
                    deliverer.Range        = (int)data["range"];
                    deliverer.Vehicle      = (Vehicles)(int)data["vehicle"];
                    deliverer.Fare         = (double)data["fare"];

                    //TODO: Able to update Home

                    if (_deliverersRepository.Update(deliverer))
                    {
                        return(new OkObjectResult(deliverer));
                    }
                    else
                    {
                        return(new StatusCodeResult(500));
                    }
                }
                else
                {
                    throw new TokenException();
                }
            } catch (Exception e) {
                _logger.Error(e.ToString());

                if (e is TokenException)
                {
                    return(new UnauthorizedResult());
                }
                else
                {
                    return(new BadRequestResult());
                }
            }
        }