コード例 #1
0
ファイル: UserController.cs プロジェクト: arock95/RecipeAPI2
        public async Task <IActionResult> CreateUser([FromBody] RecipeUserView userView)
        {
            if (ModelState.IsValid)
            {
                RecipeUser user = await _recipeUser.FindByEmailAsync(userView.Email);

                if (user == null)
                {
                    user = new RecipeUser
                    {
                        Email     = userView.Email,
                        UserName  = userView.UserName,
                        FirstName = userView.FirstName,
                        LastName  = userView.LastName
                    };
                    var result = await _recipeUser.CreateAsync(user, userView.Password);

                    if (result == IdentityResult.Success)
                    {
                        return(Ok());
                    }
                }
            }
            return(BadRequest());
        }
コード例 #2
0
        //GET: Recipe/Details/5
        public IActionResult Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            RecipeUserView recipe = (RecipeUserView)(from r in _context.Recipes
                                                     join u in _context.Users on r.UserId equals u.Id
                                                     where r.Id == id
                                                     select new RecipeUserView
            {
                RecipeId = r.Id,
                RecipeName = r.Name,
                RecipeImages = _context.RecipeImages.Where(f => f.Id == r.Id).ToList(),
                RecipeDescription = r.Description,
                RecipeTimeToComplete = r.TimeToComplete,
                Image = u.Image,
                Name = u.Name,
                Id = u.Id,
                Steps = _context.Steps.Where(f => f.RecipeId == r.Id).ToList(),
                Ingredients = _context.Ingredients.Where(f => f.RecipeId == r.Id).ToList()
            }).FirstOrDefault();


            if (recipe == null)
            {
                return(NotFound());
            }

            return(View(recipe));
        }
コード例 #3
0
ファイル: LoginController.cs プロジェクト: arock95/RecipeAPI2
        public async Task <IActionResult> Login([FromBody] RecipeUserView recipe)
        {
            if (ModelState.IsValid)
            {
                var result = await _signInMgr.PasswordSignInAsync(recipe.UserName, recipe.Password, false, false);

                if (result.Succeeded)
                {
                    return(Ok());
                }
            }
            return(Unauthorized());
        }
コード例 #4
0
        public async Task <IActionResult> Create(RecipeUserView recipeView)
        {
            string fileName = string.Empty;
            string path     = string.Empty;

            Recipe recipe = new Recipe();

            recipe.Description    = recipeView.RecipeDescription;
            recipe.Name           = recipeView.RecipeName;
            recipe.TimeToComplete = recipeView.RecipeTimeToComplete;

            recipe.UserId = Convert.ToInt32(User.FindFirst("Id").Value);
            //recipe.Image = fileName;
            if (ModelState.IsValid)
            {
                _context.Add(recipe);
                await _context.SaveChangesAsync();

                var files = HttpContext.Request.Form.Files;
                if (files.Count > 0)
                {
                    for (int i = 0; i < files.Count; i++)
                    {
                        var extension = Path.GetExtension(files[i].FileName);
                        fileName = Guid.NewGuid().ToString() + extension;

                        path = Path.Combine(_environment.WebRootPath, "RecipeImages") + "/" + fileName;

                        using (FileStream fs = System.IO.File.Create(path))
                        {
                            files[i].CopyTo(fs);
                            fs.Flush();
                        }

                        RecipeImages recipeImages = new RecipeImages();
                        recipeImages.Image    = fileName;
                        recipeImages.RecipeId = recipe.Id;
                        _context.Add(recipeImages);
                        await _context.SaveChangesAsync();
                    }
                }

                return(RedirectToAction("Recipe", "Index", new { Page = 1 }));
            }
            return(View(recipe));
        }
コード例 #5
0
ファイル: UserController.cs プロジェクト: arock95/RecipeAPI2
        public async Task <IActionResult> CreateToken([FromBody] RecipeUserView userView)
        {
            if (ModelState.IsValid)
            {
                var user = await _recipeUser.FindByNameAsync(userView.UserName);

                if (user != null)
                {
                    var result = await _signIn.CheckPasswordSignInAsync(user, userView.Password, false);

                    if (result.Succeeded)
                    {
                        var claims = new[]
                        {
                            new Claim(JwtRegisteredClaimNames.Sub, user.Email),
                            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                            new Claim(JwtRegisteredClaimNames.UniqueName, user.UserName)
                        };

                        var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
                        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                        var token = new JwtSecurityToken(
                            _config["Tokens:Issuer"],
                            _config["Tokens:Audience"],
                            claims,
                            expires: DateTime.UtcNow.AddMinutes(60),
                            signingCredentials: creds
                            );
                        var results = new
                        {
                            token      = new JwtSecurityTokenHandler().WriteToken(token),
                            expiration = token.ValidTo
                        };
                        return(Created("", results));
                    }
                }
            }
            return(BadRequest());
        }