예제 #1
0
        public async Task <Result <ConfirmEmailCreateModel> > ConfirmUserAsync(ConfirmEmailCreateModel model)
        {
            var userForConfirm = await _db.UserLogins
                                 .AsNoTracking()
                                 .FirstOrDefaultAsync(x => x.Login == model.EmailAddress && x.Type == UserLoginType.Email);

            if (userForConfirm == null)
            {
                return(new Result <ConfirmEmailCreateModel>("User not exist"));
            }
            if (userForConfirm.IsConfirm)
            {
                return(new Result <ConfirmEmailCreateModel>("User is already confirmed"));
            }
            if (userForConfirm.TokenConfirm != model.Token)
            {
                return(new Result <ConfirmEmailCreateModel>("Token not confirmed"));
            }

            userForConfirm.IsConfirm         = true;
            userForConfirm.ConfirmAt         = DateTime.Now;
            userForConfirm.ConfirmFromDevice = _detectClient.GetClientInfo(model);

            _db.UserLogins.Update(userForConfirm);
            await _db.SaveChangesAsync();

            return(new Result <ConfirmEmailCreateModel>());
        }
예제 #2
0
        public async Task <IActionResult> ConfirmAsync([FromBody] ConfirmEmailCreateModel model)
        {
            var res = await _authenticationService.ConfirmUserAsync(model);

            if (res.IsSuccessed)
            {
                return(ReturnOk(null));
            }
            return(ReturnBadRequest(res.Error));
        }