예제 #1
0
        public ViewModels.User Save(ViewModels.RegisterUser user)
        {
            try
            {
                if (!ValidateUser(user))
                {
                    base.ValidationFailed();
                    return(null);
                }

                base.ValidationPassed();
                DataModels.User dbUser = new DataModels.User();
                dbUser.CreatedDate      = DateTime.Now;
                dbUser.EmailAddress     = user.EmailAddress;
                dbUser.FirstName        = user.FirstName;
                dbUser.LastName         = user.LastName;
                dbUser.PasswordHash     = hashGenerator.CalculateHash(user.Password);
                dbUser.PublicIdentifier = Guid.NewGuid();
                DataModels.Site site = null;
                if (this.configuration["SingleSiteMode"].ToLower() == "true")
                {
                    site        = this.context.Site.FirstOrDefault();
                    dbUser.Site = site;
                }
                if (this.context.User.Count() == 0)
                {
                    //Congrats you are the site admin!
                    dbUser.Role = this.context.Role.Where(x => x.ID == 1).FirstOrDefault();
                }
                else
                {
                    //Lowly team member
                    dbUser.Role = this.context.Role.Where(x => x.ID == 4).FirstOrDefault();
                }
                this.context.User.Add(dbUser);
                this.context.SaveChanges();
                ViewModels.User viewUser = new ViewModels.User();
                viewUser.FirstName    = dbUser.FirstName;
                viewUser.LastName     = dbUser.LastName;
                viewUser.EmailAddress = dbUser.EmailAddress;
                viewUser.UserSite     = site.PublicIdentifier;
                viewUser.userId       = dbUser.PublicIdentifier;
                return(viewUser);
            }
            catch (Exception e)
            {
                base.SetError(e.Message);
                return(null);
            }
        }
예제 #2
0
        public IActionResult Post([FromBody] ViewModels.RegisterUser user)
        {
            ViewModels.User returnedUser = userRepository.Save(user);
            if (!userRepository.ValidSubmission)
            {
                return(BadRequest(user));
            }

            if (userRepository.ErrorDetected)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(new ObjectResult(returnedUser));
        }
예제 #3
0
        private bool ValidateUser(ViewModels.RegisterUser user)
        {
            if (String.IsNullOrEmpty(user.FirstName) || user.FirstName.Length > 50)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(user.LastName) || user.LastName.Length > 50)
            {
                return(false);
            }

            if (String.IsNullOrEmpty(user.EmailAddress) || user.EmailAddress.Length > 50)
            {
                return(false);
            }


            DataModels.Site site = null;
            if (this.configuration["SingleSiteMode"].ToLower() == "true")
            {
                site = this.context.Site.FirstOrDefault();
                if (site == null)
                {
                    return(false);
                }
            }
            else
            {
                //Halt registration for now
                return(false);
            }

            //TODO: Update basic Repo class to allow setting validation error message (enum or code that client can display)
            DataModels.User[] users = this.context.User.Where(x => x.EmailAddress == user.EmailAddress).ToArray();
            if (users.Count() > 0)
            {
                return(false);
            }

            return(true);
        }