public IActionResult GetVehicleById(int id)
 {
     try {
         var vehicle = _vehicleLogic.GetVehicleById(id);
         if (vehicle == null)
         {
             return(BadRequest());
         }
         var requestHeaders = HttpContext.Request.Headers;
         if (requestHeaders.TryGetValue("Authorization", out StringValues token))
         {
             var userRole = JwtService.GetRoleFromToken(JwtService.DecodeToken(token.ToString()));
             if (userRole == Roles.user.GetEnumDescription() &&
                 (vehicle.IsActive == null ||
                  !(bool)vehicle.IsActive ||
                  !vehicle.IsAvailable ||
                  !vehicle.IsProper)
                 )
             {
                 return(BadRequest());
             }
         }
         else
         {
             return(Unauthorized());
         }
         return(Ok(vehicle));
     } catch (Exception e) {
         return(StatusCode(500, e));
     }
 }
        public async Task <IActionResult> UpdatePersonAvatar([FromForm] UserAvatarModel model)
        {
            try {
                if (ModelState.IsValid)
                {
                    var requestHeaders = HttpContext.Request.Headers;
                    int userId         = 0;
                    if (requestHeaders.TryGetValue("Authorization", out StringValues token))
                    {
                        userId = JwtService.GetUserIdFromToken(JwtService.DecodeToken(token.ToString()));
                        if (userId < 1)
                        {
                            return(Unauthorized());
                        }
                    }
                    else
                    {
                        return(Unauthorized());
                    }
                    byte[] avatarImage;
                    using (var memoryStream = new MemoryStream()) {
                        await model.AvatarImage.CopyToAsync(memoryStream);

                        avatarImage = memoryStream.ToArray();
                    }
                    string guid = Guid.NewGuid().ToString();
                    string mime = model.AvatarImage.ContentType.Contains("/") ?
                                  model.AvatarImage.ContentType.Split("/")[1] :
                                  model.AvatarImage.ContentType;
                    string fileName = $"{guid}.{mime}";
                    string realPath;
                    try {
                        realPath = _personLogic.SavePersonsAvatar(fileName, avatarImage, userId);
                    } catch (Exception e) {
                        return(StatusCode(500, e));
                    }
                    if (string.IsNullOrWhiteSpace(realPath))
                    {
                        return(BadRequest());
                    }

                    return(Ok(realPath));
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            } catch (Exception e) {
                return(BadRequest(e));
            }
        }
Ejemplo n.º 3
0
        public Task OnAuthorizationAsync(AuthorizationFilterContext context)
        {
            if (context.Filters.Any(f => f is IAllowAnonymousFilter))
            {
                return(Task.FromResult(0));
            }

            var request  = context.HttpContext.Request;
            var response = context.HttpContext.Response;

            if (request.Headers.TryGetValue("Authorization", out StringValues token))
            {
                try {
                    JwtSecurityToken validToken = JwtService.DecodeToken(token.ToString());

                    if (validToken != null)
                    {
                        AttachUpdatedTokenToHeader(response, validToken);

                        if (!IsAuthorized(context, validToken) ||
                            !IsUserActive(validToken)
                            )
                        {
                            setUnauthorized();
                        }
                    }
                    else
                    {
                        setUnauthorized();
                    }
                } catch {
                    setUnauthorized();
                }
            }
            else
            {
                setUnauthorized();
            }

            void setUnauthorized()
            {
                SetUnauthorized(response);
            }

            return(Task.FromResult(0));
        }
Ejemplo n.º 4
0
 public IActionResult GetCurrentUser(string token)
 {
     try {
         var validatedToken = JwtService.DecodeToken(token);
         if (validatedToken == null)
         {
             return(Unauthorized("Unauthorized"));
         }
         var userId = JwtService.GetUserIdFromToken(validatedToken);
         if (userId == 0)
         {
             var role = JwtService.GetRoleFromToken(validatedToken);
             if (role == Roles.nonUser.GetEnumDescription())
             {
                 return(NoContent());
             }
             else
             {
                 return(Unauthorized("Unauthorized"));
             }
         }
         try {
             var user = BLFactoryService.GetUserLogic.GetUser(userId);
             if (user == null)
             {
                 return(Unauthorized("Unauthorized"));
             }
             user.Password = "";
             return(Ok(user));
         } catch (Exception e) {
             return(StatusCode(500, e));
         }
     } catch (Exception e) {
         return(BadRequest(e));
     }
 }
Ejemplo n.º 5
0
 public IActionResult AddOrder([FromBody] NewOrderModel model)
 {
     try {
         if (model == null)
         {
             return(BadRequest("Body content is not valid!"));
         }
         if (!ModelState.IsValid)
         {
             return(BadRequest(ModelState));
         }
         if (!(model.StartDate.ToLocalTime() > DateTime.Now.AddDays(-1)) ||
             !(model.EndDate > model.StartDate)
             )
         {
             return(BadRequest("Inavalid dates range!"));
         }
         var requestHeaders = HttpContext.Request.Headers;
         int userId         = 0;
         if (requestHeaders.TryGetValue("Authorization", out StringValues token))
         {
             userId = JwtService.GetUserIdFromToken(JwtService.DecodeToken(token.ToString()));
             if (userId < 1)
             {
                 return(Unauthorized());
             }
         }
         else
         {
             return(Unauthorized());
         }
         var entity = model.Map <OrderEntity>();
         entity.StartDate = entity.StartDate.ToLocalTime();
         entity.EndDate   = entity.EndDate.ToLocalTime();
         entity.UserId    = userId;
         var vehicle = _vehicleLogic.GetVehicleById(entity.VehicleId);
         if (vehicle == null || vehicle.CarClass == null)
         {
             return(BadRequest());
         }
         var userRole = JwtService.GetRoleFromToken(JwtService.DecodeToken(token.ToString()));
         if (userRole == Roles.user.GetEnumDescription() &&
             (vehicle.IsActive == null ||
              !(bool)vehicle.IsActive ||
              !vehicle.IsAvailable ||
              !vehicle.IsProper)
             )
         {
             return(BadRequest());
         }
         entity.Price = (decimal)((entity.EndDate - entity.StartDate).TotalDays * vehicle.CarClass.DailyPrice);
         entity.Price = decimal.Round(entity.Price, 2);
         entity       = _orderLogic.AddOrder(entity);
         if (entity == null)
         {
             throw new Exception("Somthing went wrong while adding model to DB!");
         }
         if (entity.User != null)
         {
             entity.User.Password = "";
         }
         return(Ok(entity));
     } catch (Exception e) {
         return(StatusCode(500, e));
     }
 }