//END TWO FACTOR AUTHENTICATION



        //TOTP CONFIGURATION/SETUP
        public async Task <IActionResult> SetUpTotp(TotpData model)
        {
            User user = await userManager.GetUserAsync(HttpContext.User);

            if (user == null)
            {
                user = await userManager.FindByIdAsync(HttpContext.Session.GetString("Id"));
            }
            if (user.TotpConfigured == false)
            {
                HttpContext.Session.SetString("Id", user.Id);
                string randomKey            = RandomString(25);
                var    totpSetupGenerator   = new TotpSetupGenerator();
                var    totpSetup            = totpSetupGenerator.Generate("SportsAdministrationApp", user.Name, randomKey, 300, 300);
                string qrCodeImageUrl       = totpSetup.QrCodeImage;
                string manualEntrySetupCode = totpSetup.ManualSetupKey;

                user.QrCodeUrl      = qrCodeImageUrl;
                user.TotpSetupCode  = manualEntrySetupCode;
                user.randomKey      = randomKey;
                user.TotpConfigured = true;
            }
            //to pass data into View
            TotpData dta = new TotpData
            {
                TotpSetupCode = user.TotpSetupCode,
                QrCodeUrl     = user.QrCodeUrl
            };

            model.TotpSetupCode = user.TotpSetupCode;
            model.QrCodeUrl     = user.QrCodeUrl;
            await userManager.UpdateAsync(user);

            return(View(dta));
        }
Beispiel #2
0
        public override void Create(Manager entity, out ExcutedResult result)
        {
            entity.Id   = Guid.NewGuid();
            entity.Salt = CodeHelper.GenerateStrNum();

            var securtyKey = entity.Id + entity.Salt;

            var setupGenerator = new TotpSetupGenerator();
            var totpSetup      = setupGenerator.Generate("Ngk", entity.Account, securtyKey);

            entity.Pwd        = GetHashPwd(DefaultPassword, entity.Salt);
            entity.State      = (int)EnumState.Normal;
            entity.CreateTime = DateTime.UtcNow;

            base.Create(entity, out result);
            if (result.Status == EnumStatus.Success)
            {
                result.Data = totpSetup;
            }
        }
 public TotpSetupGeneratorTests()
 {
     this.totpSetupGenerator = new TotpSetupGenerator();
 }