public static ServerResponse ResetPassword(string emailOrMobile) { ServerResponse response = new ServerResponse(); try { IRandomTextGenerator generator = IocInstance.Container.Resolve <IRandomTextGenerator>(); var newPassword = generator.Generate(RandomChars, RandomLength); ResetPasswordInfo info = new ResetPasswordInfo() { ClientId = CurrentClient.ClientId, SessionId = HttpContext.Current.Session.SessionID, DeviceId = HttpContext.Current.Request.UserHostAddress, DeviceInfo = HttpContext.Current.Request.UserAgent, EmailOrMobile = emailOrMobile, NewPassword = newPassword }; var cp = IocInstance.Container.Resolve <ISSOClientProvider>(); var r = cp.ResetPassword(info); response.Status = r.Status; response.Message = r.Message; } catch (Exception ex) { response.Status = ResponseStatus.Exception; response.Message = ex.Message; } return(response); }
public LoginMessage AuthenticateAccount(string site, string device, string deviceId, string sessionId, string account, string password) { LoginMessage msg = new LoginMessage(); var user = repoUser.Query(o => o.Account == account && o.Status == DataStatus.Normal).FirstOrDefault(); if (user == null) { msg.Status = LoginStatus.AccountNotExists; return(msg); } password = pwdEncrypt.Encrypt(password); if (user.Password != password) { msg.Status = LoginStatus.PasswordNotCorrect; return(msg); } var siteInfo = host.GetSites().GetSiteByName(site); if (siteInfo == null) { msg.Status = LoginStatus.Exception; msg.Message = string.Format("Site {0} is not found.", site); return(msg); } string token = generator.Generate(RandomChars, AccessTokenLength); var session = repoSession.Query(o => o.SessionId == sessionId).FirstOrDefault(); if (session == null) { session = new ServerSession() { SessionId = sessionId, SiteName = site, UserId = user.UserId, Device = device, DeviceId = deviceId, AccessToken = token, AccessTokenExpiryTime = DateTime.Now.AddMinutes(SessionTimeOutMinutes), LastAccessTime = DateTime.Now }; repoSession.Insert(session); } else { session.AccessToken = token; session.UserId = user.UserId; session.AccessTokenExpiryTime = DateTime.Now.AddMinutes(SessionTimeOutMinutes); session.LastAccessTime = DateTime.Now; repoSession.Update(session); } msg.Status = LoginStatus.Success; msg.EncryptedSession = GetEncryptedLocalSession(siteInfo, user, session); return(msg); }
public ActionResult Get() { int width = 100; int height = 30; if (!string.IsNullOrEmpty(Request.QueryString["w"])) { int.TryParse(Request.QueryString["w"], out width); } if (!string.IsNullOrEmpty(Request.QueryString["h"])) { int.TryParse(Request.QueryString["h"], out height); } string randomText = radomTextGenerator.Generate(AllowedChars, Length); Bitmap img = captchaGenerator.Generate(this.Session.SessionID, randomText, width, height); MemoryStream stream = new MemoryStream(); img.Save(stream, ImageFormat.Jpeg); return(new FileContentResult(stream.ToArray(), "image/jpeg")); }
public IServerResponse <Session> SignOn(SignOnInfo signOnInfo) { var client = GetClient(signOnInfo.ClientId); var encryptor = GetClientEncryptor(client); var hpwd = pwdEncryptor.Encrypt(signOnInfo.Password); var obj = repoUser.Query(o => (o.Account == signOnInfo.AccountOrEmailOrMobile || o.Email == signOnInfo.AccountOrEmailOrMobile || o.Mobile == signOnInfo.AccountOrEmailOrMobile) && o.Password == hpwd).FirstOrDefault(); ServerResponse <Session> response = new ServerResponse <Session>(); if (obj == null) { response.Status = ResponseStatus.Failed; response.Message = DAF.SSO.Resources.Locale(o => o.AccountNotFound); } else { switch (obj.Status) { case DataStatus.Deleted: response.Status = ResponseStatus.Failed; response.Message = DAF.SSO.Resources.Locale(o => o.AccountNotFound); break; case DataStatus.Locked: response.Status = ResponseStatus.Failed; response.Message = DAF.SSO.Resources.Locale(o => o.AccountLocked); break; case DataStatus.ReadOnly: response.Status = ResponseStatus.Failed; response.Message = DAF.SSO.Resources.Locale(o => o.AccountIsReadOnly); break; case DataStatus.Normal: default: response.Status = ResponseStatus.Success; break; } } if (response.Status == ResponseStatus.Success) { try { trans.BeginTransaction(); var serverSession = repoServerSession.Query(o => o.SessionId == signOnInfo.SessionId && o.CientId == client.ClientId && o.DeviceId == signOnInfo.DeviceId).FirstOrDefault(); if (serverSession == null) { serverSession = new ServerSession() { CientId = client.ClientId, SessionId = signOnInfo.SessionId, FromCientId = null, DeviceId = signOnInfo.DeviceId, DeviceInfo = signOnInfo.DeviceInfo, UserId = obj.UserId, AccessToken = randomGenerator.Generate(config.TokenAllowedChars, config.TokenLength), LastAccessTime = DateTime.Now, AccessTokenExpiryTime = DateTime.Now.AddMinutes(config.SessionExpiredTimeOutMunites) }; repoServerSession.Insert(serverSession); } else { if (serverSession.AccessTokenExpiryTime < DateTime.Now) { serverSession.AccessToken = randomGenerator.Generate(config.TokenAllowedChars, config.TokenLength); } serverSession.LastAccessTime = DateTime.Now; serverSession.AccessTokenExpiryTime = DateTime.Now.AddMinutes(config.SessionExpiredTimeOutMunites); repoServerSession.Update(serverSession); } trans.Commit(); response.Data = GetClientSession(client, obj, serverSession); } catch (Exception ex) { trans.Rollback(); response.Status = ResponseStatus.Failed; response.Message = ex.Message; } } return(response); }
public string NewId() { return(generator.Generate("1234567890", 8)); }