/// <summary> /// Returns all logins matching the login info - generally there should only be one but in some cases /// there might be more than one depending on if an administrator has been editing/removing members /// </summary> /// <param name="login"></param> /// <returns></returns> public IEnumerable <IIdentityUserLogin> Find(IUserLoginInfo login) { using (var scope = ScopeProvider.CreateScope(autoComplete: true)) { return(_externalLoginRepository.Get(Query <IIdentityUserLogin>().Where(x => x.ProviderKey == login.ProviderKey && x.LoginProvider == login.LoginProvider)) .ToList()); // ToList is important here, must evaluate within uow! // ToList is important here, must evaluate within uow! } }
public string GenerateCookie(IUserLoginInfo userLoginInfo) { userLoginInfo.Date = DateTime.UtcNow.AddDays(DefaultCookieTimespanInDays); userLoginInfo.Hmac = CalculateHmac(userLoginInfo); var str = JsonConvert.SerializeObject(userLoginInfo, Formatting.None); return(System.Net.WebUtility.UrlEncode(str)); }
private string CalculateHmac(IUserLoginInfo userLoginInfo) { var encoding = new System.Text.ASCIIEncoding(); var bytes = encoding.GetBytes(userLoginInfo.Date.ToString("u") + userLoginInfo.UserId); using (var hmacsha256 = new HMACSHA256(_hmacKey)) { byte[] hashmessage = hmacsha256.ComputeHash(bytes); return(Convert.ToBase64String(hashmessage)); } }
public bool VerifyLoginInfo(IUserLoginInfo userLoginInfo) { // make sure the date is in the future, but not too far in the future var now = DateTime.UtcNow; if (now > userLoginInfo.Date || now.AddDays(MaxCookieTimespanInDays) < userLoginInfo.Date) { return(false); } if (CalculateHmac(userLoginInfo) == userLoginInfo.Hmac) { return(true); } return(false); }
public IUserRegistrationInfo CreateUserRegistrationInfo(IUserInfo info, IUserLoginInfo loginInfo) { return(new UserRegistrationInfo(info, loginInfo)); }
public UserRegistrationInfo(IUserInfo info, IUserLoginInfo loginInfo) { userInfo = info; userLoginInfo = loginInfo; }