public long AddPassword(UserChangeLogViewModel model)
        {
            try
            {
                var userchangeLog = new UserLogChange
                {
                    UserId      = model.Id,
                    CreatedDate = DateTime.UtcNow,
                    CreatedBy   = model.Id,
                    Type        = model.Type,
                    Oldvalue    = model.Oldvalue,
                    Newvalue    = model.Newvalue,
                };

                _customRepository.Insert(userchangeLog);
                return(model.Id);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "An unexpected exception occured,\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nClassname=" + this.GetType().Name, LogLevel.Error);
                throw;
            }
        }
Beispiel #2
0
        public async Task <IActionResult> EnableAuthenticator()
        {
            try
            {
                var user = await GetCurrentUserAsync();

                //// Update Status

                string oldvalue = JsonConvert.SerializeObject(user);
                //user.TwoFactorEnabled = true;
                //await _userManager.UpdateAsync(user);

                //// Update Status

                //return Ok(new TwoFactorAuthResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.EnableTroFactor });


                var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

                if (string.IsNullOrEmpty(unformattedKey))
                {
                    await _userManager.ResetAuthenticatorKeyAsync(user);

                    unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
                }
                string Newvalue = JsonConvert.SerializeObject(user);
                UserChangeLogViewModel userChangeLogViewModel = new UserChangeLogViewModel();
                userChangeLogViewModel.Id       = user.Id;
                userChangeLogViewModel.Newvalue = Newvalue;
                userChangeLogViewModel.Type     = EnuserChangeLog.TwofactoreChange.ToString();
                userChangeLogViewModel.Oldvalue = oldvalue;

                long userlog = _iuserChangeLog.AddPassword(userChangeLogViewModel);

                TwoFactorAuth TFAuth = new TwoFactorAuth();
                //string URL;
                string sKey = string.Empty;
                //  string sName = string.Empty;
                //sKey = TFAuth.CreateSecret(160);
                // sName = user.UserName; // dSetReq.Tables(0).Rows(0)("NAME");
                sKey = TFAuth.CreateSecret(160);
                //URL = TFAuth.GetQrCodeImageAsDataUri(sName, sKey);
                // string value = URL + "" + sKey;
                // string code123 = TFAuth.GetQrCodeImageAsDataUri(, string secret)
                user.PhoneNumber = sKey;
                var result = await _userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    var model = new EnableAuthenticatorViewModel
                    {
                        SharedKey = FormatKey(sKey),
                        //AuthenticatorUri = GenerateQrCodeUri(user.UserName, unformattedKey)
                        // UserName = user.UserName,
                        AuthenticatorUri = TFAuth.GetQrCodeImageAsDataUri(user.UserName, sKey)
                    };
                    return(Ok(new EnableAuthenticationResponse {
                        ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.TwoFactorActiveRequest, EnableAuthenticatorViewModel = model
                    }));
                }

                return(BadRequest(new EnableAuthenticationResponse {
                    ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.TwoFactorActiveRequest, ErrorCode = enErrorCode.NotFound
                }));

                //if (string.IsNullOrEmpty(user.Email))   ////  This Condition by pankaj for when user login with molile the email field is null so.
                //{
                //        var model = new EnableAuthenticatorViewModel
                //        {
                //            SharedKey = FormatKey(unformattedKey),
                //            AuthenticatorUri = GenerateQrCodeUri(user.UserName, unformattedKey)

                //        };
                //        return Ok(new EnableAuthenticationResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.TwoFactorActiveRequest, EnableAuthenticatorViewModel = model });
                //}
                //else
                //{

                //    var model = new EnableAuthenticatorViewModel
                //    {
                //        SharedKey = FormatKey(unformattedKey),
                //        AuthenticatorUri = GenerateQrCodeUri(user.Email, unformattedKey)
                //    };
                //    return Ok(new EnableAuthenticationResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.TwoFactorActiveRequest, EnableAuthenticatorViewModel = model });

                //}
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Date: " + _basePage.UTC_To_IST() + ",\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nControllername=" + this.GetType().Name, LogLevel.Error);
                return(BadRequest(new TwoFactorAuthResponse {
                    ReturnCode = enResponseCode.InternalError, ReturnMsg = ex.ToString(), ErrorCode = enErrorCode.Status500InternalServerError
                }));
            }
        }
Beispiel #3
0
        public async Task <IActionResult> Disable2fa([FromBody] DisableAuthenticatorViewModel model)
        {
            var user = await GetCurrentUserAsync();

            try
            {
                if (!user.TwoFactorEnabled)
                {
                    return(BadRequest(new DisableAuthenticatorResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.TwoFAalreadyDisable, ErrorCode = enErrorCode.Status4108TwoFAalreadydisable
                    }));
                }

                TwoFactorAuth TFAuth = new TwoFactorAuth();
                //sKey = key; //TFAuth.CreateSecret(160);
                string code = TFAuth.GetCode(user.PhoneNumber);
                if (model.Code != code)
                //    bool status = TFAuth.VerifyCode(user.PhoneNumber, model.Code, 5);
                //if (!status)
                {
                    return(BadRequest(new DisableAuthenticatorResponse {
                        ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.TwoFactorVerificationDisable, ErrorCode = enErrorCode.Status4071TwoFactorVerificationDisable
                    }));
                }
                else
                {
                    //user.TwoFactorEnabled = true;
                    //await _userManager.UpdateAsync(user);
                    var disable2faResult = await _userManager.SetTwoFactorEnabledAsync(user, false);

                    //return Ok(new EnableAuthenticationResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.EnableTwoFactor });
                    if (disable2faResult.Succeeded)
                    {
                        string oldvalue = JsonConvert.SerializeObject(user);
                        user.TwoFactorEnabled = false;
                        await _userManager.UpdateAsync(user);

                        string Newvalue = JsonConvert.SerializeObject(user);
                        UserChangeLogViewModel userChangeLogViewModel = new UserChangeLogViewModel();
                        userChangeLogViewModel.Id       = user.Id;
                        userChangeLogViewModel.Newvalue = Newvalue;
                        userChangeLogViewModel.Type     = EnuserChangeLog.TwofactoreChange.ToString();
                        userChangeLogViewModel.Oldvalue = oldvalue;

                        long userlog = _iuserChangeLog.AddPassword(userChangeLogViewModel);
                        //_logger.LogInformation("User with ID {UserId} has disabled 2fa.", user.Id);
                        return(Ok(new DisableAuthenticatorResponse {
                            ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.DisableTroFactor
                        }));
                    }
                    else
                    {
                        return(BadRequest(new DisableAuthenticatorResponse {
                            ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.DisableTroFactorError, ErrorCode = enErrorCode.Status4055DisableTroFactorError
                        }));
                    }
                }



                /*
                 * // Strip spaces and hypens
                 * var verificationCode = model.Code.Replace(" ", string.Empty).Replace("-", string.Empty);
                 *
                 * var is2faTokenValid = await _userManager.VerifyTwoFactorTokenAsync(
                 *  user, _userManager.Options.Tokens.AuthenticatorTokenProvider, verificationCode);
                 *
                 * if (!is2faTokenValid)
                 * {
                 *  return BadRequest(new DisableAuthenticatorResponse { ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.TwoFactorVerificationDisable, ErrorCode = enErrorCode.Status4071TwoFactorVerificationDisable });
                 *
                 * }
                 * else
                 * {
                 *  var disable2faResult = await _userManager.SetTwoFactorEnabledAsync(user, false);
                 *  if (disable2faResult.Succeeded)
                 *  {
                 *      string oldvalue = JsonConvert.SerializeObject(user);
                 *      user.TwoFactorEnabled = false;
                 *      await _userManager.UpdateAsync(user);
                 *      string Newvalue = JsonConvert.SerializeObject(user);
                 *      UserChangeLogViewModel userChangeLogViewModel = new UserChangeLogViewModel();
                 *      userChangeLogViewModel.Id = user.Id;
                 *      userChangeLogViewModel.Newvalue = Newvalue;
                 *      userChangeLogViewModel.Type = EnuserChangeLog.TwofactoreChange.ToString();
                 *      userChangeLogViewModel.Oldvalue = oldvalue;
                 *
                 *      long userlog = _iuserChangeLog.AddPassword(userChangeLogViewModel);
                 *      _logger.LogInformation("User with ID {UserId} has disabled 2fa.", user.Id);
                 *      return Ok(new DisableAuthenticatorResponse { ReturnCode = enResponseCode.Success, ReturnMsg = EnResponseMessage.DisableTroFactor });
                 *  }
                 *  else
                 *  {
                 *      return BadRequest(new DisableAuthenticatorResponse { ReturnCode = enResponseCode.Fail, ReturnMsg = EnResponseMessage.DisableTroFactorError, ErrorCode = enErrorCode.Status4055DisableTroFactorError });
                 *  }
                 * }
                 */
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Date: " + _basePage.UTC_To_IST() + ",\nMethodName:" + System.Reflection.MethodBase.GetCurrentMethod().Name + "\nControllername=" + this.GetType().Name, LogLevel.Error);
                return(BadRequest(new DisableAuthenticatorResponse {
                    ReturnCode = enResponseCode.InternalError, ReturnMsg = ex.ToString(), ErrorCode = enErrorCode.Status500InternalServerError
                }));
            }
        }