Пример #1
0
        /// <summary>
        /// Updates a user
        /// </summary>
        /// <param name="id"></param>
        /// <param name="userSecurityModel"></param>
        /// <returns></returns>
        public bool Update(int id, UserSecurityModel userSecurityModel)
        {
            var success = false;

            if (userSecurityModel != null)
            {
                using (var scope = new TransactionScope())
                {
                    var userSecurity = _dbActions.UserSecurityRepository.GetById(id);
                    if (userSecurity != null)
                    {
                        userSecurity.Id             = userSecurityModel.Id;
                        userSecurity.IpAddress      = userSecurityModel.IpAddress;
                        userSecurity.UserId         = userSecurityModel.UserId;
                        userSecurity.Password       = userSecurityModel.Password;
                        userSecurity.LastLogin      = userSecurityModel.LastLogin;
                        userSecurity.LockedOut      = userSecurityModel.IsLockedOut;
                        userSecurity.Created        = userSecurityModel.Created;
                        userSecurity.CreatedBy      = userSecurityModel.CreatedBy;
                        userSecurity.LastModified   = userSecurityModel.LastModified;
                        userSecurity.LastModifiedBy = userSecurityModel.LastModifiedBy;

                        _dbActions.UserSecurityRepository.Update(userSecurity);
                        _dbActions.Save();
                        scope.Complete();
                        success = true;
                    }
                }
            }
            return(success);
        }
Пример #2
0
        public async Task <OperationResult> ChangePasswordAsync(UserSecurityModel userToChange)
        {
            if (userToChange.Password != userToChange.ConfirmPassword)
            {
                throw new PasswordMismatchException("New password is not matching confirmation value");
            }

            var repository = _repoManager.GetRepository <User>();
            var user       = (await repository.GetAsync(u => u.ID == userToChange.ID))?.FirstOrDefault();

            Guard.NotNull(user, nameof(user));

            if (_authorizationContext.GetContext <UserModel>().ID != user.ID &&
                !_authorizationContext.GetPolicy(UserPolicies.UserAdministration))
            {
                throw new ChatAppException("Unauthorized attempt to change password");
            }

            if (!VerifyPasswordHash(userToChange.OldPassword, user.PasswordHash, user.PasswordSalt))
            {
                throw new PasswordMismatchException("Wrong old password!");
            }

            CreatePasswordHash(userToChange.Password, out byte[] passwordHash, out byte[] passwordSalt);
            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;

            await repository.UpdateAsync(user);

            return(new OperationResult(true, "Password has been changed."));
        }
Пример #3
0
 /// <summary>
 /// Creates a user security
 /// </summary>
 /// <param name="userSecurityModel"></param>
 /// <returns></returns>
 public int Create(UserSecurityModel userSecurityModel)
 {
     using (var scope = new TransactionScope())
     {
         var userSecurity = new UserSecurity()
         {
             UserId         = userSecurityModel.Id,
             IpAddress      = userSecurityModel.IpAddress,
             LockedOut      = userSecurityModel.IsLockedOut,
             Password       = userSecurityModel.Password,
             Created        = userSecurityModel.Created,
             CreatedBy      = userSecurityModel.CreatedBy,
             LastModified   = userSecurityModel.LastModified,
             LastModifiedBy = userSecurityModel.LastModifiedBy,
         };
         var userCheck = _dbActions.UserSecurityRepository.GetSingle(p => p.UserId == userSecurityModel.UserId || p.IpAddress == userSecurityModel.IpAddress);
         if (userCheck == null)
         {
             _dbActions.UserSecurityRepository.Insert(userSecurity);
             _dbActions.Save();
             scope.Complete();
             return(userSecurity.Id);
         }
         scope.Complete();
         return(-1);
     }
 }
Пример #4
0
        public async Task <ActionResult> ChangePassword(UserSecurityModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView("_PasswordPartial", model));
            }

            var result = await UserManager.ChangePasswordAsync(User.Id(), model.OldPassword, model.NewPassword);

            if (result.Succeeded)
            {
                return(PartialView("_PasswordPartial", model));
            }

            AddErrors(result);
            return(PartialView("_PasswordPartial", model));
        }
Пример #5
0
        public async Task <OperationResult> LoginAsync(UserSecurityModel userForLogin)
        {
            Guard.NotNull(userForLogin, nameof(userForLogin));

            var repository = _repoManager.GetRepository <User>();
            var user       = (await repository.GetAsync(u => string.Compare(u.Email, userForLogin.Email, true) == 0))?.FirstOrDefault();

            _ = user ?? throw new PersonNotFoundException("User not found.");

            if (!VerifyPasswordHash(userForLogin.Password, user.PasswordHash, user.PasswordSalt))
            {
                throw new PasswordMismatchException("Wrong password!");
            }

            var token = GenerateToken(user);

            return(new OperationResult(true, "Logged in", token));
        }
Пример #6
0
        // The Method is used to generate token for user
        public string GenerateTokenForUser(UserSecurityModel userSecurity, string[] roles)
        {
            var signingKey         = new InMemorySymmetricSecurityKey(Encoding.UTF8.GetBytes(CommunicationKey));
            var now                = DateTime.UtcNow;
            var signingCredentials = new SigningCredentials(signingKey,
                                                            SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.Sha256Digest);

            var fullName = string.Empty;

            if (userSecurity.User.Contact != null)
            {
                fullName = userSecurity.User.Contact.FirstName + " " + userSecurity.User.Contact.LastName;
            }
            var claimsIdentity = new ClaimsIdentity(new List <Claim>()
            {
                new Claim(ClaimTypes.Name, userSecurity.User.UserName),
                new Claim(ClaimTypes.NameIdentifier, userSecurity.User.Id.ToString()),
                new Claim(ClaimTypes.GivenName, fullName)
                //new Claim(ClaimTypes.Role, "All"),
                //new Claim(ClaimTypes.Role, "Admin")
            }, "Custom");

            foreach (string role in roles)
            {
                claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, role));
            }

            var securityTokenDescriptor = new SecurityTokenDescriptor()
            {
                AppliesToAddress   = "http://www.streamline.com",
                TokenIssuerName    = "self",
                Subject            = claimsIdentity,
                SigningCredentials = signingCredentials,
                Lifetime           = new Lifetime(now, now.AddMinutes(int.Parse(InternalSettings.TokenExpirationMinutes))),
            };

            var tokenHandler = new JwtSecurityTokenHandler();

            var plainToken = tokenHandler.CreateToken(securityTokenDescriptor);
            // var plainToken = tokenHandler.CreateToken(securityTokenDescriptor);
            var signedAndEncodedToken = tokenHandler.WriteToken(plainToken);

            return(signedAndEncodedToken);
        }
Пример #7
0
        public async Task <OperationResult> RegisterAsync(UserSecurityModel userForRegister)
        {
            Guard.NotNull(userForRegister, nameof(userForRegister));

            if (await PersonExists(userForRegister.Email))
            {
                throw new DuplicateException("User already exists!");
            }

            CreatePasswordHash(userForRegister.Password, out byte[] passwordHash, out byte[] passwordSalt);
            var user = DataMapper.Map <UserSecurityModel, User>(userForRegister);

            user.Email        = userForRegister.Email;
            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;

            var repository = _repoManager.GetRepository <User>();
            await repository.CreateAsync(user);

            return(new OperationResult(true, "Registration successful", payload: user.ID));
        }
Пример #8
0
        public UserSecurityModel GetUserByUserName(string userName)
        {
            UserSecurity userSecurity = _dbActions.UserSecurityRepository.GetSingle(p => p.User.UserName == userName);

            if (userSecurity != null)
            {
                UserSecurityModel userSecurityEntity = new UserSecurityModel()
                {
                    Id     = userSecurity.Id,
                    UserId = userSecurity.UserId,
                    User   = new UserModel()
                    {
                        Id           = userSecurity.User.Id,
                        UserName     = userSecurity.User.UserName,
                        EmailAddress = userSecurity.User.EmailAddress,
                        ContactId    = userSecurity.User.ContactId,
                        Contact      = new ContactModel()
                        {
                            Id           = userSecurity.User.Contact.Id,
                            FirstName    = userSecurity.User.Contact.FirstName,
                            LastName     = userSecurity.User.Contact.LastName,
                            EmailAddress = userSecurity.User.Contact.EmailAddress,
                            Addresses    = userSecurity.User.Contact.Addresses.Select(p => new AddressModel()
                            {
                                Id            = p.Id,
                                AddressTypeId = p.AddressType.Id,
                                AddressType   = new AddressTypeModel()
                                {
                                    Id          = p.AddressType.Id,
                                    AddressType = p.AddressType.AddressType,
                                    Archived    = p.AddressType.Archived
                                },
                                Address1 = p.Address1,
                                Address2 = p.Address2,
                                City     = p.City,
                                StateId  = p.StateId,
                                State    = new StateModel()
                                {
                                    Id = p.State.Id,
                                    StateAbbreviation = p.State.StateAbbreviation,
                                    StateName         = p.State.StateName,
                                    Archived          = p.State.Archived
                                },
                                Zip            = p.Zip,
                                CreatedBy      = p.CreatedBy,
                                Created        = p.Created,
                                LastModified   = p.LastModified,
                                LastModifiedBy = p.LastModifiedBy
                            }).ToList(),
                            PhoneNumbers = userSecurity.User.Contact.PhoneNumbers.Select(p => new PhoneModel()
                            {
                                Id          = p.Id,
                                PhoneTypeId = p.PhoneType.Id,
                                PhoneType   = new PhoneTypeModel()
                                {
                                    Id        = p.PhoneType.Id,
                                    PhoneType = p.PhoneType.PhoneType,
                                    Archived  = p.PhoneType.Archived
                                },
                                AreaCode       = p.AreaCode,
                                PhoneNumber    = p.Number,
                                Extension      = p.Extension,
                                CreatedBy      = p.CreatedBy,
                                Created        = p.Created,
                                LastModified   = p.LastModified,
                                LastModifiedBy = p.LastModifiedBy
                            }).ToList(),
                            Created        = userSecurity.User.Contact.Created,
                            CreatedBy      = userSecurity.User.Contact.CreatedBy,
                            LastModified   = userSecurity.User.Contact.LastModified,
                            LastModifiedBy = userSecurity.User.Contact.LastModifiedBy,
                            Archived       = userSecurity.User.Contact.Archived
                        },
                        Roles = userSecurity.User.Roles.Select(p => new RoleModel()
                        {
                            Id             = p.Id,
                            Name           = p.RoleName,
                            Description    = p.Description,
                            Created        = p.Created,
                            CreatedBy      = p.CreatedBy,
                            LastModified   = p.LastModified,
                            LastModifiedBy = p.LastModifiedBy,
                            Archived       = p.Archived
                        }).ToList(),
                        Created        = userSecurity.Created,
                        CreatedBy      = userSecurity.CreatedBy,
                        LastModified   = userSecurity.LastModified,
                        LastModifiedBy = userSecurity.LastModifiedBy
                    },
                    Password       = userSecurity.Password,
                    IpAddress      = userSecurity.IpAddress,
                    IsLockedOut    = userSecurity.LockedOut,
                    LastLogin      = userSecurity.LastLogin,
                    Created        = userSecurity.Created,
                    CreatedBy      = userSecurity.CreatedBy,
                    LastModified   = userSecurity.LastModified,
                    LastModifiedBy = userSecurity.LastModifiedBy
                };
                return(userSecurityEntity);
            }

            return(null);
        }
Пример #9
0
        /// <summary>
        /// Fetches all the user Security.
        /// </summary>
        /// <param name="includeArchived"></param>
        /// <returns></returns>
        public IEnumerable <UserSecurityModel> GetAll(bool includeArchived)
        {
            var userSecurities = _dbActions.UserSecurityRepository.GetAll().ToList();

            if (!userSecurities.Any())
            {
                return(null);
            }
            List <UserSecurityModel> userSecurityEntities = new List <UserSecurityModel>();

            foreach (UserSecurity userSecurity in userSecurities)
            {
                //var lookupType = _dbActions.LookupTypeRepository.GetById(lookup.LookupTypeId);
                UserSecurityModel userSecurityEntity = new UserSecurityModel()
                {
                    Id     = userSecurity.Id,
                    UserId = userSecurity.UserId,
                    User   = new UserModel()
                    {
                        Id           = userSecurity.User.Id,
                        UserName     = userSecurity.User.UserName,
                        EmailAddress = userSecurity.User.EmailAddress,
                        ContactId    = userSecurity.User.ContactId,
                        Contact      = new ContactModel()
                        {
                            Id           = userSecurity.User.Contact.Id,
                            FirstName    = userSecurity.User.Contact.FirstName,
                            LastName     = userSecurity.User.Contact.LastName,
                            EmailAddress = userSecurity.User.Contact.EmailAddress,
                            Addresses    = userSecurity.User.Contact.Addresses.Select(p => new AddressModel()
                            {
                                Id            = p.Id,
                                AddressTypeId = p.AddressType.Id,
                                AddressType   = new AddressTypeModel()
                                {
                                    Id          = p.AddressType.Id,
                                    AddressType = p.AddressType.AddressType,
                                    Archived    = p.AddressType.Archived
                                },
                                Address1 = p.Address1,
                                Address2 = p.Address2,
                                City     = p.City,
                                StateId  = p.StateId,
                                State    = new StateModel()
                                {
                                    Id = p.State.Id,
                                    StateAbbreviation = p.State.StateAbbreviation,
                                    StateName         = p.State.StateName,
                                    Archived          = p.State.Archived
                                },
                                Zip            = p.Zip,
                                CreatedBy      = p.CreatedBy,
                                Created        = p.Created,
                                LastModified   = p.LastModified,
                                LastModifiedBy = p.LastModifiedBy
                            }).ToList(),
                            PhoneNumbers = userSecurity.User.Contact.PhoneNumbers.Select(p => new PhoneModel()
                            {
                                Id          = p.Id,
                                PhoneTypeId = p.PhoneType.Id,
                                PhoneType   = new PhoneTypeModel()
                                {
                                    Id        = p.PhoneType.Id,
                                    PhoneType = p.PhoneType.PhoneType,
                                    Archived  = p.PhoneType.Archived
                                },
                                AreaCode       = p.AreaCode,
                                PhoneNumber    = p.Number,
                                Extension      = p.Extension,
                                CreatedBy      = p.CreatedBy,
                                Created        = p.Created,
                                LastModified   = p.LastModified,
                                LastModifiedBy = p.LastModifiedBy
                            }).ToList(),
                            Created        = userSecurity.User.Contact.Created,
                            CreatedBy      = userSecurity.User.Contact.CreatedBy,
                            LastModified   = userSecurity.User.Contact.LastModified,
                            LastModifiedBy = userSecurity.User.Contact.LastModifiedBy,
                            Archived       = userSecurity.User.Contact.Archived
                        },
                        Roles = userSecurity.User.Roles.Select(p => new RoleModel()
                        {
                            Id             = p.Id,
                            Name           = p.RoleName,
                            Description    = p.Description,
                            CreatedBy      = p.CreatedBy,
                            Created        = p.Created,
                            LastModified   = p.LastModified,
                            LastModifiedBy = p.LastModifiedBy
                        }).ToList(),
                        Created        = userSecurity.Created,
                        CreatedBy      = userSecurity.CreatedBy,
                        LastModified   = userSecurity.LastModified,
                        LastModifiedBy = userSecurity.LastModifiedBy
                    },
                    Password       = userSecurity.Password,
                    IpAddress      = userSecurity.IpAddress,
                    IsLockedOut    = userSecurity.LockedOut,
                    LastLogin      = userSecurity.LastLogin,
                    Created        = userSecurity.Created,
                    CreatedBy      = userSecurity.CreatedBy,
                    LastModified   = userSecurity.LastModified,
                    LastModifiedBy = userSecurity.LastModifiedBy
                };
                userSecurityEntities.Add(userSecurityEntity);
            }

            return(userSecurityEntities);
        }
Пример #10
0
 // PUT: api/State/5
 public bool Put(int id, [FromBody] UserSecurityModel userSecurity)
 {
     return(id > 0 && _userSecurityServices.Update(id, userSecurity));
 }
Пример #11
0
 // POST: api/State
 public int Post([FromBody] UserSecurityModel userSecurity)
 {
     return(_userSecurityServices.Create(userSecurity));
 }
Пример #12
0
 // meixie
 public bool updateUserSecurity(UserSecurityModel model)
 {
     return(true);
 }
Пример #13
0
        public TrapMessage Handler(AbstractSocketData socketData)
        {
            if (socketData == null)
            {
                return(null);
            }
            TrapMessage result;

            try
            {
                int         dataLenth       = socketData.DataLenth;
                byte[]      dataBytes       = socketData.DataBytes;
                int         protocolVersion = SnmpPacket.GetProtocolVersion(dataBytes, dataLenth);
                TrapMessage trapMessage;
                SnmpPacket  snmpPacket;
                if (protocolVersion == 0)
                {
                    trapMessage = new TrapV1Message();
                    snmpPacket  = new SnmpV1TrapPacket();
                    ((SnmpV1TrapPacket)snmpPacket).decode(dataBytes, dataLenth);
                }
                else
                {
                    if (protocolVersion == 1)
                    {
                        trapMessage = new TrapV2Message();
                        snmpPacket  = new SnmpV2Packet();
                        ((SnmpV2Packet)snmpPacket).decode(dataBytes, dataLenth);
                        if (snmpPacket.Pdu.Type != PduType.V2Trap)
                        {
                            throw new SnmpException("Invalid SNMP version 2 packet type received.");
                        }
                    }
                    else
                    {
                        trapMessage = new TrapV3Message();
                        snmpPacket  = new SnmpV3Packet();
                        UserSecurityModel uSM = ((SnmpV3Packet)snmpPacket).GetUSM(dataBytes, dataLenth);
                        if (uSM.EngineId.Length <= 0)
                        {
                            throw new SnmpException("Invalid packet. Authoritative engine id is not set.");
                        }
                        if (uSM.SecurityName.Length <= 0)
                        {
                            throw new SnmpException("Invalid packet. Security name is not set.");
                        }
                        if (this.usmConfigs.Count > 0)
                        {
                            UsmConfig usmConfig = this.FindPeer(uSM.EngineId.ToString(), uSM.SecurityName.ToString());
                            if (usmConfig == null)
                            {
                                throw new SnmpException("SNMP packet from unknown peer.");
                            }
                            ((SnmpV3Packet)snmpPacket).USM.Authentication = (AuthenticationDigests)usmConfig.Authentication;
                            ((SnmpV3Packet)snmpPacket).USM.Privacy        = (PrivacyProtocols)usmConfig.Privacy;
                            if (usmConfig.Privacy != Privacy.None)
                            {
                                ((SnmpV3Packet)snmpPacket).USM.PrivacySecret.Set(usmConfig.PrivacySecret);
                            }
                            if (usmConfig.Authentication != Authentication.None)
                            {
                                ((SnmpV3Packet)snmpPacket).USM.AuthenticationSecret.Set(usmConfig.AuthenticationSecret);
                            }
                        }
                        ((SnmpV3Packet)snmpPacket).decode(dataBytes, dataLenth);
                        if (snmpPacket.Pdu.Type != PduType.V2Trap)
                        {
                            throw new SnmpException("Invalid SNMP version 3 packet type received.");
                        }
                    }
                }
                trapMessage.AgentIpAddress = socketData.Target;
                trapMessage.Port           = socketData.Port;
                SnmpTrapHandler.configTrap(trapMessage, protocolVersion, snmpPacket);
                this.configVb(trapMessage, protocolVersion, snmpPacket);
                result = trapMessage;
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(ex.Message);
                result = null;
            }
            return(result);
        }
Пример #14
0
        public HttpResponseMessage Login(LoginUserModel userLogin)
        {
            HttpRequestHeaders headers = Request.Headers;
            // var userName = string.Empty;
            //var password = string.Empty;

            //var userName = Request.GetHeader("userName");
            //if (headers.Contains("userName"))
            //{
            //    userName = headers.GetValues("userName").First();
            //}

            //if (headers.Contains("password"))
            //{
            //    password = headers.GetValues("password").First();
            //}

            UserSecurityModel userSecurity = _authenticationServices.GetUserByUserName(userLogin.Email);

            if (userSecurity != null)
            {
                AuthenticationFunctions authenticationFunctions = new AuthenticationFunctions();

                bool successful = authenticationFunctions.ValidatePassword(userLogin.Password, userSecurity.Password);

                if (!successful)
                {
                    return(Request.CreateResponse(HttpStatusCode.Unauthorized, "Invalid User or Password", Configuration.Formatters.JsonFormatter));
                }

                AuthenticationModule authentication = new AuthenticationModule();
                List <string>        roles          = new List <string>();
                foreach (RoleModel role in userSecurity.User.Roles)
                {
                    roles.Add(role.Name);
                }
                string token = authentication.GenerateTokenForUser(userSecurity, roles.ToArray());

                // Save the Security Token to the database for Audit purposes.
                _authenticationServices.UpdateLoginStatus(userSecurity.UserId, token, DateTime.Now.AddMinutes(int.Parse(InternalSettings.TokenExpirationMinutes)));

                AuthTokenModel returnToken = new AuthTokenModel()
                {
                    Token    = token,
                    Errors   = new List <string>(),
                    Messages = new List <string>()
                    {
                        "Success"
                    }
                };


                return(Request.CreateResponse(HttpStatusCode.OK, returnToken, Configuration.Formatters.JsonFormatter));
            }

            AuthTokenModel badReturnToken = new AuthTokenModel
            {
                Token  = "",
                Errors = new List <string>()
                {
                    "Invalid User Name or Password"
                },
                Messages = new List <string>()
                {
                    "Invalid Request or Missing Parameters"
                }
            };

            return(Request.CreateResponse(HttpStatusCode.BadRequest, badReturnToken));
        }