public async Task <Result <UnverifiedAccount> > RegisterAccount(
            UnregisteredAccount u
            )
        {
            var user = await _userManager.FindByEmailAsync(u.Email);

            if (user != null)
            {
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                return(new Ok <UnverifiedAccount>(new UnverifiedAccount(user.Email, user.Id, code)));
            }
            else
            {
                user = new IdsUser()
                {
                    Id       = Guid.NewGuid().ToString(),
                    UserName = u.Email,
                    Email    = u.Email
                };

                var registration = await _userManager.CreateAsync(user);

                if (registration.Succeeded)
                {
                    var emptyProfile = await _userManager.AddClaimsAsync(user, EmptyProfile);

                    if (emptyProfile.Succeeded)
                    {
                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        return(new Ok <UnverifiedAccount>(new UnverifiedAccount(user.Email, user.Id, code)));
                    }
                    else
                    {
                        return(emptyProfile.ToAppError <UnverifiedAccount>());
                    }
                }
                else
                {
                    return(registration.ToAppError <UnverifiedAccount>());
                }
            }
        }
Example #2
0
        public async Task <Result <Guid> > Invite(string email)
        {
            var u = await _userManager.FindByEmailAsync(email);

            if (u == null)
            {
                var newUserId = Guid.NewGuid();
                var newUser   = new IdsUser()
                {
                    Id       = newUserId.ToString(),
                    UserName = email,
                    Email    = email
                };

                var createUserResult = await _userManager.CreateAsync(newUser);

                if (createUserResult.Succeeded)
                {
                    var emptyProfile = await _userManager.AddClaimsAsync(newUser, EmptyProfile);

                    if (emptyProfile.Succeeded)
                    {
                        return(new Ok <Guid>(newUserId));
                    }
                    else
                    {
                        return(emptyProfile.ToAppError <Guid>());
                    }
                }
                else
                {
                    return(createUserResult.ToAppError <Guid>());
                }
            }
            else
            {
                return(new Ok <Guid>(Guid.Parse(u.Id)));
            }
        }