public async Task <IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice, string clientVersion, string registKey = "") { var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion); return(Json(result.ToApiResult())); }
public void AddOrUpdate(int accountId, string deviceId) { using (var ctx = _ctx ?? new AyerLechonContext()) { var loginDevice = ctx.LoginDevices.FirstOrDefault(a => a.DeviceId == deviceId && a.CustomerID == accountId); var account = ctx.Customers.FirstOrDefault(a => a.CustomerID == accountId); ctx.Customers.Attach(account); account.LastLogin = DateTimeOffset.Now.ToEpochTime(); if (loginDevice != null) { ctx.LoginDevices.Attach(loginDevice); loginDevice.LastLoginDate = DateTimeOffset.Now.ToEpochTime(); } else { loginDevice = new LoginDevice() { CustomerID = accountId, CreateDate = DateTimeOffset.Now.ToEpochTime(), DeviceId = deviceId, LastLoginDate = DateTimeOffset.Now.ToEpochTime() }; ctx.LoginDevices.Add(loginDevice); } } }
public async Task <IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion) { var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId); if (user == null) { return(Json(new ApiResult(OperationResultType.QueryNull, "用户不存在"))); } if (user.SysUser.IsLocked) { return(Json(new ApiResult(OperationResultType.NoChanged, "用户已被冻结,请联系客服。"))); } if (loginDevice == LoginDevice.Android && clientVersion != ConfigurationManager.AppSettings["ApkVision"]) { return(Json(new ApiResult(OperationResultType.ValidError, "有新版本,请更新。"))); } if (loginDevice == LoginDevice.Ios && clientVersion != ConfigurationManager.AppSettings["IpaVision"]) { return(Json(new ApiResult(OperationResultType.ValidError, "有新版本,请更新。"))); } var result = await UserContract.ResetToken(user, loginDevice, clientVersion); return(Json(result.ToApiResult())); }
public async Task RegisterDeviceLoginAsync(string userId, string userAgentString) { var deviceInfo = _deviceDetector.GetDeviceInfo(userAgentString); var device = _dbContext.Set <LoginDevice>().SingleOrDefault(d => d.UserAgent == deviceInfo.UserAgent); if (device == null) { device = new LoginDevice { Browser = deviceInfo.Browser, Id = Guid.NewGuid().ToString(), MobileDevice = deviceInfo.MobileDevice, OperatingSystem = deviceInfo.OperatingSystem, UserAgent = deviceInfo.UserAgent }; _dbContext.Set <LoginDevice>().Add(device); } var userDevice = _dbContext.Set <UserLoginDevice>().SingleOrDefault(d => d.UserId == userId && d.DeviceId == device.Id); if (userDevice == null) { userDevice = new UserLoginDevice { DeviceId = device.Id, RegistrationTimeUtc = DateTime.UtcNow, UserId = userId }; _dbContext.Add(userDevice); } userDevice.LastLoginTimeUtc = DateTime.UtcNow; await _dbContext.SaveChangesAsync(); }
public async Task<IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion) { var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId); if (user == null) return Json(new ApiResult("用户不存在", OperationResultType.QueryNull)); var result = await UserContract.ResetToken(user, loginDevice, clientVersion); return Json(result.ToApiResult()); }
public async Task <IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice, string clientVersion, string registKey = "") { var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion); //if (result.ResultType == OperationResultType.Success) //{ // OnlineUserStore.ResetLastOperationTime(phoneNo); //} return(Json(result.ToApiResult())); }
public async Task<IHttpActionResult> Login(string phoneNo, string password, LoginDevice loginDevice, string clientVersion, string registKey = "") { var result = await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion); //if (result.ResultType == OperationResultType.Success) //{ // OnlineUserStore.ResetLastOperationTime(phoneNo); //} return Json(result.ToApiResult()); }
public async Task <IHttpActionResult> ResetTokenValidityPeriod(LoginDevice loginDevice, string clientVersion) { var user = await UserContract.UserInfos.SingleOrDefaultAsync(p => p.Id == OperatorId); if (user == null) { return(Json(new ApiResult("用户不存在", OperationResultType.QueryNull))); } var result = await UserContract.ResetToken(user, loginDevice, clientVersion); return(Json(result.ToApiResult())); }
public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var verifiedAccessToken = await VerifyExternalAccessToken(model.ExternalAccessToken); if (verifiedAccessToken == null) { return(BadRequest("Invalid Provider or External Access Token")); } using (var context = new AyerLechonContext()) { var customer = context.Customers.Include("LoginDevices").FirstOrDefault(a => a.Email == model.Email); if (customer == null) { customer = new Customer() { Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, VIP = false }; } var device = context.LoginDevices.FirstOrDefault(a => a.DeviceId == model.DeviceId); if (device != null) { context.LoginDevices.Remove(device); } var newdevice = new LoginDevice() { DeviceId = model.DeviceId, CreateDate = DateTime.Now.ToEpochTime(), FbAccountId = verifiedAccessToken.user_id, LastLoginDate = DateTime.Now.ToEpochTime(), }; customer.LoginDevices.Add(newdevice); context.SaveChanges(); var accessTokenResponse = GenerateLocalAccessTokenResponse(customer); return(Ok(accessTokenResponse)); } }
/// <summary> /// 重置用户Token有效期 /// </summary> /// <param name="user">用户</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task <OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion) { Operator oper = new Operator() { UserId = user.Id.ToString(), UserName = user.SysUser.UserName, LoginDevice = loginDevice, PhoneNo = user.SysUser.PhoneNumber, ClientVersion = clientVersion, ValidatePeriod = DateTime.Now.AddDays(30),//默认30天有效期 UserDatas = new Dictionary <string, object>() }; string strAuth = oper.ToJsonString(); user.Token = DesHelper.Encrypt(strAuth, OSharp.Core.Constants.BodeAuthDesKey); await UserInfoRepo.UpdateAsync(user); return(new OperationResult(OperationResultType.Success, "重置成功", user.Token)); }
/// <summary> /// 重置用户Token有效期 /// </summary> /// <param name="user">用户</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task <OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion) { Operator oper = new Operator() { UserId = user.Id.ToString(), UserName = user.SysUser.UserName, LoginDevice = loginDevice, PhoneNo = user.SysUser.PhoneNumber, ClientVersion = clientVersion, ValidatePeriod = DateTime.Now.AddDays(30)//默认30天有效期 }; string authDesKey = "bodeauth"; string strAuth = oper.ToJsonString(); user.Token = DesHelper.Encrypt(strAuth, authDesKey); await UserInfoRepo.UpdateAsync(user); return(new OperationResult(OperationResultType.Success, "重置成功")); }
public async Task <OperationResult> Login(string phoneNo, string code, LoginDevice loginDevice) { phoneNo.CheckNotNullOrEmpty("phoneNo"); code.CheckNotNullOrEmpty("code"); SysUser sUser = UserManager.FindByName(phoneNo); var severCode = GetValidateCode(phoneNo, CodeType.动态登录); if (sUser == null || sUser.UserType != UserType.App用户) { return(BodeResult.QueryNull("用户不存在")); } else if (sUser.IsLocked) { return(BodeResult.ValidError("用户已经被冻结,请联系客户.")); } else if (severCode == null || severCode.Code != code) { return(BodeResult.ValidError("验证码错误.")); } return(await Login(phoneNo, "null", loginDevice, "1.0.0")); }
/// <summary> /// 三方登录 /// </summary> /// <param name="thirdKey">三方key</param> /// <param name="thirdProvider">微博?QQ?微信?</param> /// <param name="loginDevice">登录设备 IOS?Android?</param> /// <param name="clientVersion">客户端版本</param> /// <param name="registKey">极光推送Key</param> /// <returns></returns> public async Task <OperationResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "") { var thirdUser = SysUserLoginRepo.Entities.SingleOrDefault(m => m.ProviderKey == thirdKey && m.ThridProvider == thirdProvider); if (thirdUser == null) { var userName = "******" + DateTime.Now.ToString("yyyyMMddhhffff"); SysUser sUser = new SysUser() { UserName = userName, NickName = userName, UserType = UserType.App用户, }; UserInfoRepo.UnitOfWork.TransactionEnabled = true; await UserManager.CreateAsync(sUser); var userInfo = new UserInfo() { SysUser = sUser, IsDeleted = false, Sex = Sex.限, }; await UserInfoRepo.InsertAsync(userInfo); thirdUser = new SysUserLogin() { ProviderKey = thirdKey, ThridProvider = thirdProvider, User = sUser, }; await SysUserLoginRepo.InsertAsync(thirdUser); await UserInfoRepo.UnitOfWork.SaveChangesAsync(); } var theUser = UserInfoRepo.Entities.SingleOrDefault(m => m.SysUser.Id == thirdUser.User.Id); if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, Token = theUser.Token }; return(CdkxResult.Success(loginInfo)); }
public async Task <IHttpActionResult> LoginByCode(string phoneNo, string code, LoginDevice loginDevice) { var result = await UserContract.Login(phoneNo, code, loginDevice); return(Json(result.ToApiResult())); }
/// <summary> /// 用户登录 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion) { userName.CheckNotNullOrEmpty("userName"); password.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(userName); var result = await UserManager.CheckPasswordAsync(sUser, password); if (sUser == null || sUser.UserType != UserType.App用户) { return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null)); } else if (sUser.IsLocked) { return(new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null)); } else if (!await UserManager.CheckPasswordAsync(sUser, password)) { return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null)); } else { return(await Login(userName, registKey, loginDevice, clientVersion)); } }
public DarkLoginSession(LoginDevice loginDevice) { Clear(); LoginDevice = loginDevice; }
/// <summary> /// 重置用户Token有效期 /// </summary> /// <param name="user">用户</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task<OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice,string clientVersion) { Operator oper = new Operator() { UserId = user.Id.ToString(), UserName = user.SysUser.UserName, LoginDevice = loginDevice, PhoneNo = user.SysUser.PhoneNumber, ClientVersion = clientVersion, ValidatePeriod = DateTime.Now.AddDays(30),//默认30天有效期 UserDatas = new Dictionary<string, object>() }; string strAuth = oper.ToJsonString(); user.Token = DesHelper.Encrypt(strAuth, OSharp.Core.Constants.BodeAuthDesKey); await UserInfoRepo.UpdateAsync(user); return new OperationResult(OperationResultType.Success, "重置成功", user.Token); }
/// <summary> /// 用户登录 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task<OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice,string clientVersion) { userName.CheckNotNullOrEmpty("userName"); password.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(userName); var result = await UserManager.CheckPasswordAsync(sUser, password); if (sUser == null || sUser.UserType != UserType.App用户) { return new OperationResult(OperationResultType.QueryNull, "用户不存在", null); } else if (sUser.IsLocked) { return new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null); } else if (!await UserManager.CheckPasswordAsync(sUser, password)) { return new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null); } else { //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName); if (theUser == null) { return new OperationResult(OperationResultType.ValidError, "数据错误", null); } if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, Token = theUser.Token }; return new OperationResult(OperationResultType.Success, "登录成功", loginInfo); } }
public async Task <ActionResult> Login(FormCollection values, string loginPhone, string loginPassword, int type, LoginDevice loginDevice, string clientVersion = "1.0.0", string registKey = "") { if (ModelState.IsValid) { var result = await UserContract.Login(loginPhone, loginPassword, registKey, loginDevice, clientVersion, type); if (!result.Successed) { return(Json(result.ToApiResult())); } else { var userId = (result.Data as UserTokenDto).Id; var userString = UserContract.UserInfos.SingleOrDefault(m => m.Id == userId).SysUser.ToJsonString(); FormsAuthentication.SetAuthCookie(userString, false); } return(Json(result.ToApiResult())); } return(Json(new { ReturnCode = 2, ReturnMsg = "图片验证码有误" })); }
public async Task <IHttpActionResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "") { var result = await UserContract.LoginByThird(thirdKey, thirdProvider, loginDevice, clientVersion, registKey); return(Json(result.ToApiResult())); }
/// <summary> /// 用户登录 /// </summary> /// <param name="phoneNo">手机号</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task <OperationResult> Login(string phoneNo, string password, string registKey, LoginDevice loginDevice, string clientVersion) { phoneNo.CheckNotNullOrEmpty("phoneNo"); phoneNo.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(phoneNo); var result = await UserManager.CheckPasswordAsync(sUser, password); if (!await UserManager.CheckPasswordAsync(sUser, password)) { return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null)); } else { //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.PhoneNumber == phoneNo); if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Token = theUser.Token }; return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo)); } }
/// <summary> /// 用户登录 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion) { userName.CheckNotNullOrEmpty("userName"); password.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(userName); var result = await UserManager.CheckPasswordAsync(sUser, password); if (sUser == null || sUser.UserType != UserType.App用户) { return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null)); } else if (sUser.IsLocked) { return(new OperationResult(OperationResultType.ValidError, "该账号已被冻结,请联系客服。", null)); } else if (!await UserManager.CheckPasswordAsync(sUser, password)) { return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null)); } else { //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName); if (theUser == null) { return(new OperationResult(OperationResultType.ValidError, "数据错误", null)); } if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, Token = theUser.Token }; return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo)); } }
private async Task <OperationResult> Login(string userName, string registKey, LoginDevice loginDevice, string clientVersion) { //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName); if (theUser == null) { return(new OperationResult(OperationResultType.ValidError, "数据错误", null)); } if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, Token = theUser.Token }; return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo)); }
/// <summary> /// 用户登录 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <param name="type">登录方式</param> /// <returns></returns> public async Task <OperationResult> Login(string userName, string password, string registKey, LoginDevice loginDevice, string clientVersion, int type) { userName.CheckNotNullOrEmpty("userName"); password.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(userName); if (sUser == null) { return(new OperationResult(OperationResultType.ValidError, "用户不存在", 0)); } if (sUser.IsLocked) { return(new OperationResult(OperationResultType.ValidError, "您的账号已被冻结,请联系客服", 0)); } if (type == 2) { //验证码 var severCode = GetValidateCode(userName, CodeType.临时密码); if (severCode == null || severCode.Code != password) { return(new OperationResult(OperationResultType.ValidError, "临时密码错误", 0)); } } else { if (!await UserManager.CheckPasswordAsync(sUser, password)) { return(new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null)); } } if (sUser.UserType != UserType.App用户) { return(new OperationResult(OperationResultType.QueryNull, "用户不存在", null)); } //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.UserName == userName); if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, PhoneNo = theUser.SysUser.PhoneNumber, Token = theUser.Token }; //return new OperationResult(OperationResultType.Success, "登录成功", sUser); return(new OperationResult(OperationResultType.Success, "登录成功", loginInfo)); }
/// <summary> /// 重置用户Token有效期 /// </summary> /// <param name="user">用户</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task<OperationResult> ResetToken(UserInfo user, LoginDevice loginDevice, string clientVersion) { Operator oper = new Operator() { UserId = user.Id.ToString(), UserName = user.SysUser.UserName, LoginDevice = loginDevice, PhoneNo = user.SysUser.PhoneNumber, ClientVersion = clientVersion, ValidatePeriod = DateTime.Now.AddDays(30)//默认30天有效期 }; string authDesKey = "bodeauth"; string strAuth = oper.ToJsonString(); user.Token = DesHelper.Encrypt(strAuth, authDesKey); await UserInfoRepo.UpdateAsync(user); return new OperationResult(OperationResultType.Success, "重置成功"); }
/// <summary> /// 用户登录 /// </summary> /// <param name="phoneNo">手机号</param> /// <param name="password">密码</param> /// <param name="registKey">极光registKey</param> /// <param name="loginDevice">登录设备</param> /// <param name="clientVersion">客户端版本</param> /// <returns></returns> public async Task<OperationResult> Login(string phoneNo, string password, string registKey, LoginDevice loginDevice, string clientVersion) { phoneNo.CheckNotNullOrEmpty("phoneNo"); phoneNo.CheckNotNullOrEmpty("password"); SysUser sUser = await UserManager.FindByNameAsync(phoneNo); var result = await UserManager.CheckPasswordAsync(sUser, password); if (!await UserManager.CheckPasswordAsync(sUser, password)) { return new OperationResult(OperationResultType.ValidError, "用户名或密码错误", null); } else { //更新最后一次登录的RegistKey var theUser = await UserInfos.SingleOrDefaultAsync(p => p.SysUser.PhoneNumber == phoneNo); if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Token = theUser.Token }; return new OperationResult(OperationResultType.Success, "登录成功", loginInfo); } }
public async Task <IHttpActionResult> ValidateRegister(string phoneNo, string password, string validateCode, LoginDevice loginDevice, string clientVersion, string email, string registKey = "") { var dto = new UserInfoRegistDto() { UserName = phoneNo, Password = password, NickName = "xbxd" + phoneNo, Email = email, }; var result = await UserContract.ValidateRegister(dto, validateCode); if (result.Successed) { return(Json((await UserContract.Login(phoneNo, password, registKey, loginDevice, clientVersion, 1)).ToApiResult())); } return(Json(result.ToApiResult())); }