Beispiel #1
0
        public OperationResult <string> Login(string username, string password)
        {
            //Validazione degli argomenti
            if (string.IsNullOrWhiteSpace(username))
            {
                throw new ArgumentNullException("username is null");
            }

            if (string.IsNullOrWhiteSpace(password))
            {
                throw new ArgumentNullException("password is null");
            }

            //Definisco i risultati di ritorno
            OperationResult <string> oResults = new OperationResult <string>();

            //Eseguo in transazione
            using (var transaction = Session.ExecuteInTransaction())
            {
                //Recupero l'utente
                User user = Session.QueryOver <User>()
                            .WhereRestrictionOn(e => e.UserName).IsInsensitiveLike(username)
                            .Where(e => e.Password == EncryptPassword.EncryptWithSha256(password))
                            .SingleOrDefault();

                //Check su username
                if (user == null)
                {
                    var vResults = new List <ValidationResult> {
                        new ValidationResult("Utente non trovato.")
                    };
                    oResults.ConcatValidationResults(vResults);
                    oResults.ReturnedValue = "Utente o password invalidi";
                    IncreaseAccessCountFail(username);
                    transaction.ExecuteCommit();
                    return(oResults);
                }

                //Aggiorno i campi utente
                user.AccessFailedCount = 0;

                //Eseguo la validazione logica
                var userValidation = ValidateEntity(user);
                oResults.ConcatValidationResults(userValidation);

                //Valuto il salvataggio
                if (!oResults.HasErrors())
                {
                    _userRepository.Save(user);
                    transaction.ExecuteCommit();
                }
                else
                {
                    transaction.ExecuteRollback();
                }
            }
            return(oResults);
        }
Beispiel #2
0
        public OperationResult <object> ResetPassword(string username)
        {
            //Validazione degli argomenti
            if (string.IsNullOrWhiteSpace(username))
            {
                throw new ArgumentNullException("Username is null");
            }

            //Definisco i risultati di ritorno
            OperationResult <object> oResults = new OperationResult <object>();

            //Eseguo in transazione
            using (var transaction = Session.ExecuteInTransaction())
            {
                //Recupero l'utente
                User user = Session.QueryOver <User>()
                            .WhereRestrictionOn(e => e.UserName).IsInsensitiveLike(username)
                            .SingleOrDefault();

                if (user == null)
                {
                    throw new ArgumentNullException("User undefined");
                }

                //Eseguo la generazione di una password temporanea
                string passwordTemp = PasswordGenerator.GenerateRandom(passwordGeneratorLength);
                user.Password = EncryptPassword.EncryptWithSha256(passwordTemp);

                //Eseguo la validazione logica dell'entità
                oResults.ValidationResults = ValidateEntity(user);

                //Valuto il salvataggio
                if (!oResults.HasErrors())
                {
                    _userRepository.Save(user);
                    transaction.ExecuteCommit();

                    oResults.ReturnedValue = passwordTemp;
                    try
                    {
                        NoticeRegisterViaEmail(user, passwordTemp);
                    }
                    catch (Exception)
                    {
                    }
                }
                else
                {
                    transaction.ExecuteRollback();
                }
            }

            //Ritorno i risultati
            return(oResults);
        }
Beispiel #3
0
        public OperationResult <object> Register(UserDto userDto, IList <Role> roles)
        {
            if (userDto == null)
            {
                throw new ArgumentNullException(nameof(userDto));
            }

            using (var transaction = Session.ExecuteInTransaction())
            {
                var emailExist = _userRepository.Count(e => e.Email == userDto.Email) > 0;
                if (emailExist)
                {
                    OperationResult <object> oResult = new OperationResult <object>();
                    oResult.ValidationResults.Add(new ValidationResult(string.Format("L'email è già presente nel sistema: {0}", userDto.Email)));
                    return(oResult);
                }

                string passwordTemp = PasswordGenerator.GenerateRandom(passwordGeneratorLength);
                User   newUser      = new User
                {
                    Firstname         = userDto.Firstname,
                    Surname           = userDto.Surname,
                    Email             = userDto.Email,
                    AccessFailedCount = 0,
                    ImgFilePath       = userDto.ImgFilePath,
                    UserName          = userDto.Username,
                    Password          = EncryptPassword.EncryptWithSha256(passwordTemp),
                    Roles             = roles
                };

                OperationResult <object> oResults = new OperationResult <object>();

                //Eseguo la validazione logica
                oResults.ConcatValidationResults(ValidateEntity(newUser));

                //valuto il salvataggio
                if (!oResults.HasErrors())
                {
                    _userRepository.Save(newUser);

                    transaction.ExecuteCommit();
                    if (!string.IsNullOrWhiteSpace(newUser.Email))
                    {
                        NoticeRegisterViaEmail(newUser, passwordTemp);
                    }
                }
                else
                {
                    transaction.ExecuteRollback();
                }
                return(oResults);
            }
        }
Beispiel #4
0
        private IList <User> BuildUsers(IList <Role> roles)
        {
            IList <User> users = new List <User>();

            User user1 = new User();

            user1.Firstname         = "Igcom";
            user1.Surname           = "Igcom";
            user1.UserName          = "******";
            user1.Email             = "*****@*****.**";
            user1.Password          = EncryptPassword.EncryptWithSha256("Igcom2019");
            user1.AccessFailedCount = 0;
            user1.Roles             = roles.Where(e => e.Name == "Admin").ToList();

            //User user2 = new User();
            //user2.Firstname = "Smartme";
            //user2.Surname = "Smartme";
            //user2.UserName = "******";
            //user2.Email = "*****@*****.**";
            //user2.Password = EncryptPassword.EncryptWithSha256("Smartme2019");
            //user2.AccessFailedCount = 0;
            //user2.Roles = roles.Where(e => e.Name == "Admin").ToList();

            User user3 = new User();

            user3.Firstname         = "Admin";
            user3.Surname           = "Admin";
            user3.UserName          = "******";
            user3.Email             = "*****@*****.**";
            user3.Password          = EncryptPassword.EncryptWithSha256("Leonardo2019");
            user3.AccessFailedCount = 0;
            user3.Roles             = roles.Where(e => e.Name == "Admin").ToList();

            User user4 = new User();

            user4.Firstname         = "Profilo centrale operativa";
            user4.Surname           = "Profilo centrale operativa";
            user4.UserName          = "******";
            user4.Email             = "*****@*****.**";
            user4.Password          = EncryptPassword.EncryptWithSha256("Igcom2019");
            user4.AccessFailedCount = 0;
            user4.Roles             = roles.Where(e => e.Name == "Centrale Operativa").ToList();

            User user5 = new User();

            user5.Firstname         = "Profilo Medico";
            user5.Surname           = "Profilo Medico";
            user5.UserName          = "******";
            user5.Email             = "*****@*****.**";
            user5.Password          = EncryptPassword.EncryptWithSha256("Medico2019");
            user5.AccessFailedCount = 0;
            user5.Roles             = roles.Where(e => e.Name == "Medico").ToList();

            //User user6 = new User();
            //user6.Firstname = "Profilo Cliente";
            //user6.Surname = "Profilo Cliente";
            //user6.UserName = "******";
            //user6.Email = "*****@*****.**";
            //user6.Password = EncryptPassword.EncryptWithSha256("Cliente2019");
            //user6.AccessFailedCount = 0;
            //user6.Roles = roles.Where(e => e.Name == "Profilo Cliente").ToList();

            //users.Add(user1);
            //users.Add(user2);
            users.Add(user3);
            //users.Add(user4);
            //users.Add(user5);
            //users.Add(user6);

            return(users);
        }