Beispiel #1
0
        public async Task <ActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByNameAsync(model.UserName);

                if (user == null)
                {
                    user = new PSUser
                    {
                        Id       = Guid.NewGuid().ToString(),
                        UserName = model.UserName,
                        Email    = model.UserName
                    };

                    var result = await _userManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        var confirmationEmail = Url.Action("ConfirmEmailAddress", "Home",
                                                           new { token = token, email = user.Email }, Request.Scheme);

                        System.IO.File.WriteAllText("confirmationLink.txt", confirmationEmail);
                    }
                }
                return(View("Success"));
            }

            return(View());
        }
Beispiel #2
0
        public PSUser ReadUser(string url, string text, string name)
        {
            PSUser psUser = (PSUser)null;
            bool   flag   = false;

            try
            {
                XmlTextReader xmlTextReader = new XmlTextReader((TextReader) new StringReader(text));
                while (!xmlTextReader.EOF)
                {
                    if (xmlTextReader.Name == name)
                    {
                        psUser = this.ParseUser(xmlTextReader.ReadOuterXml());
                    }
                    else
                    {
                        xmlTextReader.Read();
                    }
                }
            }
            catch
            {
                flag = true;
            }
            return(psUser);
        }
Beispiel #3
0
        public async Task <IActionResult> ManageUserRoles(ManageUserRolesViewModel psuser)
        {
            if (!User.IsInRole("Demo"))
            {
                PSUser user = _context.Users.Find(psuser.User.Id);

                IEnumerable <string> roles = await _rolesService.ListUserRoles(user);

                await _userManager.RemoveFromRolesAsync(user, roles);

                var    userRoles = psuser.SelectedRoles;
                string userRole  = psuser.SelectedRoles.FirstOrDefault();

                foreach (var role in userRoles)
                {
                    if (Enum.TryParse(role, out Roles roleValue))
                    {
                        await _rolesService.AddUserToRole(user, role);
                    }
                }
                return(RedirectToAction("ManageUserRoles"));
            }
            else
            {
                TempData["DemoLockout"] = "Your changes have not been saved. To make changes to the database, please log in as a full user.";
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #4
0
        public async Task<List<Project>> ListUserProjects(string userId)
        {
            PSUser user = await _context.Users         
                .Include(p => p.ProjectUsers)
                .ThenInclude(p => p.Project)
                .FirstOrDefaultAsync(p => p.Id == userId);    

            List<Project> projects = user.ProjectUsers.Select(p => p.Project).ToList();
            return projects;
        }
Beispiel #5
0
        public void DissociateUser()
        {
            var db = PSUtils.GetDb();

            db.SessionDelete(_sessionId);

            _username        = null;
            _fetchedUsername = true;

            _user        = null;
            _fetchedUser = true;
        }
Beispiel #6
0
        private async Task LoadAsync(PSUser user)
        {
            var email = await _userManager.GetEmailAsync(user);

            Email = email;

            Input = new InputModel
            {
                NewEmail = email,
            };

            IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
        }
Beispiel #7
0
        private async Task LoadAsync(PSUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                PhoneNumber = phoneNumber
            };
        }
Beispiel #8
0
        public void AssociateUser(PSUser user)
        {
            var db = PSUtils.GetDb();

            // Delete it first just in case
            db.SessionDelete(_sessionId);
            db.AttachUsernameToSession(_sessionId, user.username);

            _username        = user.username;
            _fetchedUsername = true;

            _user        = user;
            _fetchedUser = true;
        }
Beispiel #9
0
        public PSUser GetUser()
        {
            if (!_fetchedUser)
            {
                var username = GetUsername();
                if (!string.IsNullOrWhiteSpace(username))
                {
                    var db = PSUtils.GetDb();
                    _user = db.GetUser(GetUsername(), true);
                }

                _fetchedUser = true;
            }

            return(_user);
        }
        private async Task LoadSharedKeyAndQrCodeUriAsync(PSUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

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

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);
        }
Beispiel #11
0
        public void UpdateUser([FromBody] PSUser user, string username)
        {
            var db = PSUtils.GetDb();

            var oldUser = db.GetUser(username, true);

            // Copy over the updatable new fields from the user
            oldUser.username = user.username;
            oldUser.realname = user.realname;
            oldUser.access   = user.access;

            if (!string.IsNullOrWhiteSpace(user.password))
            {
                // Looks like we updated the password, so copy that over too
                oldUser.password = user.password;
            }

            db.UserUpdate(username, oldUser);
        }
Beispiel #12
0
        public async Task <bool> RemoveUserFromRole(PSUser user, string roleName)
        {
            var result = await _userManager.RemoveFromRoleAsync(user, roleName);

            return(result.Succeeded);
        }
Beispiel #13
0
        public void PostUser([FromBody] PSUser user)
        {
            var db = PSUtils.GetDb();

            db.UserInsert(user);
        }
Beispiel #14
0
        //See Default Users & Demo Users
        #region Default Users & Demo Users
        public static async Task SeedDefaultUsersAsync(UserManager <PSUser> userManager)
        {
            #region Administrator Seed
            var defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Josh",
                LastName       = "Scott",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, "!1Qwerty");

                    await userManager.AddToRoleAsync(defaultUser, Roles.Administrator.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Default Administrator User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Project Manager Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Jon",
                LastName       = "Osterman",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, "!1Qwerty");

                    await userManager.AddToRoleAsync(defaultUser, Roles.ProjectManager.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Default Project Manager User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Developer Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Walter",
                LastName       = "Kovacs",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, "!1Qwerty");

                    await userManager.AddToRoleAsync(defaultUser, Roles.Developer.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Default Developer User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Submitter Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Adrian",
                LastName       = "Veidt",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, "!1Qwerty");

                    await userManager.AddToRoleAsync(defaultUser, Roles.Submitter.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Default Submitter User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region New User Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Edward",
                LastName       = "Blake",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, "!1Qwerty");

                    await userManager.AddToRoleAsync(defaultUser, Roles.NewUser.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Default New User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion

            //These are my seeded demo users for showing off the software
            //Each user occupies a "main" role and the new Demo role
            //We will target this Demo role to prevent demo users from changing the database
            string demoPassword = "******";

            #region Demo Administrator Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Josh",
                LastName       = "Scott",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, demoPassword);

                    await userManager.AddToRoleAsync(defaultUser, Roles.Administrator.ToString());

                    await userManager.AddToRoleAsync(defaultUser, Roles.Demo.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Demo Administrator User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Demo Project Manager Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Sally",
                LastName       = "Jupiter",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, demoPassword);

                    await userManager.AddToRoleAsync(defaultUser, Roles.ProjectManager.ToString());

                    await userManager.AddToRoleAsync(defaultUser, Roles.Demo.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Demo Project Manager User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Demo Developer Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Hollis",
                LastName       = "Mason",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, demoPassword);

                    await userManager.AddToRoleAsync(defaultUser, Roles.Developer.ToString());

                    await userManager.AddToRoleAsync(defaultUser, Roles.Demo.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Demo Developer User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Demo Submitter Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Laurie",
                LastName       = "Blake",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, demoPassword);

                    await userManager.AddToRoleAsync(defaultUser, Roles.Submitter.ToString());

                    await userManager.AddToRoleAsync(defaultUser, Roles.Demo.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Demo Submitter User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }
            #endregion
            #region Demo New User Seed
            defaultUser = new PSUser
            {
                UserName       = "******",
                Email          = "*****@*****.**",
                FirstName      = "Will",
                LastName       = "Reeves",
                EmailConfirmed = true
            };
            try
            {
                var user = await userManager.FindByEmailAsync(defaultUser.Email);

                if (user == null)
                {
                    await userManager.CreateAsync(defaultUser, demoPassword);

                    await userManager.AddToRoleAsync(defaultUser, Roles.NewUser.ToString());

                    await userManager.AddToRoleAsync(defaultUser, Roles.Demo.ToString());
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("************** ERROR *************");
                Debug.WriteLine("Error Seeding Demo New User.");
                Debug.WriteLine(ex.Message);
                Debug.WriteLine("**********************************");
                throw;
            }

            #endregion
        }
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new PSUser {
                    UserName = Input.Email, Email = Input.Email
                };

                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);

                        var userId = await _userManager.GetUserIdAsync(user);

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { area = "Identity", userId = userId, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                          $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                        // If account confirmation is required, we need to show the link if we don't have a real email sender
                        if (_userManager.Options.SignIn.RequireConfirmedAccount)
                        {
                            return(RedirectToPage("./RegisterConfirmation", new { Email = Input.Email }));
                        }

                        await _signInManager.SignInAsync(user, isPersistent : false, info.LoginProvider);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            ProviderDisplayName = info.ProviderDisplayName;
            ReturnUrl           = returnUrl;
            return(Page());
        }
Beispiel #16
0
        public async Task <bool> AddUserToRole(PSUser user, string roleName)
        {
            var result = await _userManager.AddToRoleAsync(user, roleName).ConfigureAwait(false);

            return(result.Succeeded);
        }
Beispiel #17
0
 public async Task <IEnumerable <string> > ListUserRoles(PSUser user)
 {
     return(await _userManager.GetRolesAsync(user));
 }
Beispiel #18
0
 public async Task <bool> IsUserInRole(PSUser user, string roleName)
 {
     return(await _userManager.IsInRoleAsync(user, roleName));
 }