Beispiel #1
0
        public ActionResult PostRecovery([FromHeader(Name = "Recovery-Code")] Guid recoveryCode)
        {
            byte[] tokenData = new byte[256];
            Rng.GetBytes(tokenData);

            string secretToken = Convert.ToBase64String(tokenData);

            if (ApplicationStateAccess.TryGetAccountDevice(recoveryCode, out var existingAccountDevice) && ApplicationStateAccess.TryGetAccount(existingAccountDevice, out var existingAccount))
            {
                var newAccountDevice = new AccountDevice(existingAccountDevice.DeviceId, secretToken, Guid.NewGuid());

                var registrationResponseDto = new RegistrationResponseDto
                {
                    DeviceId     = newAccountDevice.DeviceId,
                    RecoveryCode = newAccountDevice.RecoveryCode,
                    SecretToken  = newAccountDevice.SecretToken,
                    InitialState = existingAccount.SyncStates.First()
                };

                existingAccount.Devices.Add(newAccountDevice);
                existingAccount.Devices.Remove(existingAccountDevice);

                Console.WriteLine($"Recovered device from recovery code {recoveryCode}. New AccountDevice DeviceId:{newAccountDevice.DeviceId} RecoveryCode:{newAccountDevice.RecoveryCode} SecretToken:{newAccountDevice.SecretToken}");
                return(new JsonResult(registrationResponseDto));
            }

            return(BadRequest($"This recovery code does not match to any known account device"));
        }
Beispiel #2
0
        public async Task Register()
        {
            ShowRegistrationErros = false;

            var result = await AuthenticationService.RegisterUser(_userForRegistration);

            Console.WriteLine("The result was " + result.IsSuccessStatusCode + "ful.");
            if (!result.IsSuccessStatusCode)
            {
                try
                {
                    var response = await result.Content.ReadAsStringAsync();

                    RegistrationResponseDto registrationResponseDto = JsonSerializer.Deserialize <RegistrationResponseDto>(response, new JsonSerializerOptions {
                        PropertyNameCaseInsensitive = true
                    });
                    ErrorMessage = registrationResponseDto.Message;
                }
                catch (Exception e)
                {
                    ErrorMessage = "Ledsen, men ditt internet är nere :(\nKom tillbaka när nätet är uppe.";
                    Console.WriteLine(e.Message);
                }
                Console.WriteLine("Now the error message will appear.");
                ShowRegistrationErros = true;
            }
            else
            {
                Console.WriteLine("De som gör de");
                NavigationManager.NavigateTo("/");
            }
        }
Beispiel #3
0
        public ActionResult Post([FromBody] StateResponseDto stateResponseChange, [FromHeader(Name = "Device-ID")] Guid deviceId, [FromHeader(Name = "Recovery-Code")] Guid recoveryCode)
        {
            stateResponseChange.Guid          = stateResponseChange.Guid;
            stateResponseChange.VersionNumber = 1;

            byte[] tokenData = new byte[256];
            Rng.GetBytes(tokenData);

            string secretToken = Convert.ToBase64String(tokenData);

            var newDevice  = new AccountDevice(deviceId, secretToken, recoveryCode);
            var newAccount = new Account(Guid.NewGuid(), new List <AccountDevice>(new[] { newDevice }), stateResponseChange);

            ApplicationStateAccess.RegisterNewAccount(newDevice, newAccount, recoveryCode);

            var registrationResponseDto = new RegistrationResponseDto
            {
                DeviceId     = deviceId,
                RecoveryCode = recoveryCode,
                SecretToken  = secretToken,
                InitialState = stateResponseChange
            };

            Console.WriteLine($"Register new device. DeviceId:{deviceId} RecoveryCode:{recoveryCode} SecretToken:{secretToken}");
            return(new JsonResult(registrationResponseDto));
        }
        public RegistrationResponseDto RegisterUser(RegistrationRequestDto registrationRequestDto)
        {
            RegistrationResponseDto registrationResponseDto;

            try
            {
                registrationResponseDto = businessAuthentication.RegisterUser(registrationRequestDto);
                registrationResponseDto.ServiceResponseStatus = 1;
            }
            catch (SSException applicationException)
            {
                registrationResponseDto = new RegistrationResponseDto
                {
                    ServiceResponseStatus = 0,
                    ErrorMessage          = applicationException.Message,
                    ErrorCode             = applicationException.ExceptionCode
                };
            }
            catch (Exception exception)
            {
                registrationResponseDto = new RegistrationResponseDto
                {
                    ServiceResponseStatus = 0,
                    ErrorCode             = ExceptionAttributes.ExceptionCodes.InternalServerError,
                    ErrorMessage          = exception.Message
                };
            }


            return(registrationResponseDto);
        }
        public async Task <RegistrationResponseDto> Registration(UserForRegistrationDto newUser)
        {
            var result = new RegistrationResponseDto();

            var user = new IdentityUser {
                UserName = newUser.Email, Email = newUser.Email
            };

            var createResult = await _userManager.CreateAsync(user, newUser.Password);

            result.IsSuccessfulRegistration = createResult.Succeeded;

            if (createResult.Succeeded)
            {
                if (_userManager.Options.SignIn.RequireConfirmedAccount)
                {
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    result.ConfirmCodeForSample = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                }
            }
            foreach (var error in createResult.Errors)
            {
                result.Errors = createResult.Errors.Select(c => c.Description).ToList();
            }

            return(result);
        }
Beispiel #6
0
        public ActionResult PostCode([FromHeader(Name = "Device-ID")] Guid deviceId, [FromHeader(Name = "Recovery-Code")] Guid recoveryCode, [FromHeader(Name = "Account-Code")] string accountCode)
        {
            byte[] tokenData = new byte[256];
            Rng.GetBytes(tokenData);
            string secretToken   = Convert.ToBase64String(tokenData);
            var    accountDevice = new AccountDevice(deviceId, secretToken, recoveryCode);

            if (ApplicationStateAccess.TryAddAccountDevice(accountDevice, accountCode) && ApplicationStateAccess.TryGetAccount(accountDevice, out var account))
            {
                var registrationResponseDto = new RegistrationResponseDto
                {
                    DeviceId     = accountDevice.DeviceId,
                    RecoveryCode = accountDevice.RecoveryCode,
                    SecretToken  = accountDevice.SecretToken,
                    InitialState = account.SyncStates.First()
                };
                return(new JsonResult(registrationResponseDto));
            }

            return(NotFound());
        }
        public RegistrationResponseDto RegisterUser(RegistrationRequestDto registrationRequestDto)
        {
            RegistrationResponseDto registrationResponseDto = new RegistrationResponseDto();
            var keyNew   = Helper.GeneratePassword(25);
            var password = Helper.EncodePassword(registrationRequestDto.UserPassword, keyNew);
            var cModel   = new RegistrationCM
            {
                UserId       = Guid.NewGuid(),
                LoginName    = registrationRequestDto.LoginName,
                UserPassword = password,
                Email        = registrationRequestDto.Email,
                PhoneNumber  = registrationRequestDto.PhoneNumber,
                PasswordSalt = keyNew,
                IsActive     = true,
                FirstName    = registrationRequestDto.FirstName,
                LastName     = registrationRequestDto.LastName,
                RoleId       = registrationRequestDto.RoleId
            };

            var response = authenticationRepository.UserRegistration(cModel);

            registrationResponseDto.RegisteredUserId = response.RegisteredUserId;
            return(registrationResponseDto);
        }