public async Task <IActionResult> RegisterStoreUser([FromBody] APIStoreUser user, CancellationToken ct)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { error = "Model state is not valid" }));
            }

            var storeUser = new StoreUserEntity
            {
                FirstName = user.FirstName,
                LastName  = user.LastName,
                UserName  = user.Email,
                Email     = user.Email,
            };

            var result = await _baseUserManager.CreateAsync(storeUser, user.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            await _baseUserManager.AddToRoleAsync(storeUser, "Store");

            //await _baseSignInManager.SignInAsync(storeUser, isPersistent: false);

            await _baseUserManager.UpdateAsync(storeUser);

            return(Ok(CreateToken(storeUser)));
        }
Exemple #2
0
        public async Task <Tuple <bool, string> > AddEntityAsync(APIStoreUser entity, CancellationToken ct)
        {
            try
            {
                if (await _dbContext.Users.FirstOrDefaultAsync(u => u.Email == entity.Email) == null)
                {
                    StoreUserEntity newUser = new StoreUserEntity()
                    {
                        Email          = entity.Email,
                        UserName       = entity.Email,
                        PasswordHash   = entity.Password,
                        FirstName      = entity.FirstName,
                        LastName       = entity.LastName,
                        TimeOfCreation = DateTimeOffset.UtcNow
                    };

                    await _dbContext.StoreUsers.AddAsync(newUser);

                    await _dbContext.SaveChangesAsync();

                    return(Tuple.Create(true, ""));
                }
                else
                {
                    return(Tuple.Create(false, $"Already have a user in database with that email {entity.Email}"));
                }
            }
            catch (Exception ex)
            {
                return(Tuple.Create(false, "Unable to add user"));;
            }
        }
Exemple #3
0
        public async Task <StoreUserEntity> UpdateEntity(StoreUserEntity entity, CancellationToken ct)
        {
            try
            {
                _dbContext.Entry(entity).State = EntityState.Modified;
                await _dbContext.SaveChangesAsync();

                return(entity);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        private string CreateToken(StoreUserEntity storeUser)
        {
            var claims = new Claim[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, storeUser.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.UniqueName, "Store"),
            };

            var signKey            = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Shopping Assistant Secret Code"));
            var signingCredentials = new SigningCredentials(signKey, SecurityAlgorithms.HmacSha256);

            var jwt = new JwtSecurityToken(signingCredentials: signingCredentials, claims: claims);

            return(new JwtSecurityTokenHandler().WriteToken(jwt));
        }
Exemple #5
0
 public Task <bool> AddEntityAsync(StoreUserEntity entity, CancellationToken ct)
 {
     throw new NotImplementedException();
 }