/// <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); }
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.")); }
/// <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); } }
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)); }
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)); }
// 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); }
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)); }
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); }
/// <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); }
// PUT: api/State/5 public bool Put(int id, [FromBody] UserSecurityModel userSecurity) { return(id > 0 && _userSecurityServices.Update(id, userSecurity)); }
// POST: api/State public int Post([FromBody] UserSecurityModel userSecurity) { return(_userSecurityServices.Create(userSecurity)); }
// meixie public bool updateUserSecurity(UserSecurityModel model) { return(true); }
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); }
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)); }