public async Task <IHttpActionResult> GuestLogin([FromBody] AccountLoginInfo info, CancellationToken token) { CustomTrace.TraceInformation("Account.GuestLogin"); var r = new Random(); string accountNamePostfix = r.Next(0, 1000000).ToString("D6"); string accountName = $"uc_{DateTime.Now.ToString("yyyyMMddHHmmssffff")}_{accountNamePostfix}"; string accountToken = EncryptHashManager.GenerateToken(); string password = Guid.NewGuid().ToString(); var account = new AccountEntity { Id = Guid.NewGuid().ToString(), AccountName = accountName, IsGuest = true, Password = EncryptHashManager.ComputeHash(password), Token = EncryptHashManager.GenerateToken() }; await this.Database.Accounts.InsertAsync(account, token); var response = new AccountGuestLoginResponse { AccountId = account.Id, AccountName = accountName, Token = accountToken, Password = password }; return(this.CreateSuccessResult(response)); }
public async Task E2E_AppClient_Reset_Password_Test() { var registerResponse = await CreateTestAccount(); var resetInfo = new AccountResetPasswordInfo { AccountName = registerResponse.AccountName, Password = "******", SuperPassword = ValidAccountPassword }; await Task.Delay(TimeSpan.FromSeconds(1)); var resetPasswordResponse = await acClient.AccountResetPasswordAsync(resetInfo); var loginInfo = new AccountLoginInfo { AccountName = registerResponse.AccountName, Password = ValidAccountPassword, Device = TestDevice }; await TestExpector.ExpectUCenterErrorAsync( UCenterErrorCode.AccountPasswordUnauthorized, async() => { await acClient.AccountLoginAsync(loginInfo); }); }
public async Task <IHttpActionResult> GuestLogin([FromBody] AccountLoginInfo info) { Logger.Info("Account.GuestLogin"); var r = new Random(); string accountNamePostfix = r.Next(0, 1000000).ToString("D6"); string accountName = $"uc_{DateTime.Now.ToString("yyyyMMddHHmmssffff")}_{accountNamePostfix}"; string token = EncryptHashManager.GenerateToken(); string password = Guid.NewGuid().ToString(); var account = new AccountEntity { AccountName = accountName, IsGuest = true, Password = EncryptHashManager.ComputeHash(password), Token = EncryptHashManager.GenerateToken(), CreatedDateTime = DateTime.UtcNow }; await this.DatabaseContext.Bucket.InsertSlimAsync(account); var response = new AccountGuestLoginResponse { AccountId = account.Id, AccountName = accountName, Token = token, Password = password }; return(CreateSuccessResult(response)); }
public async Task <IHttpActionResult> Login([FromBody] AccountLoginInfo info, CancellationToken token) { CustomTrace.TraceInformation($"Account.Login AccountName={info.AccountName}"); var account = await this.Database.Accounts.GetSingleAsync(a => a.AccountName == info.AccountName, token); if (account == null) { throw new UCenterException(UCenterErrorCode.AccountNotExist); } if (!EncryptHashManager.VerifyHash(info.Password, account.Password)) { await this.RecordLogin( account, UCenterErrorCode.AccountLoginFailedPasswordNotMatch, "The account name and password do not match", token); throw new UCenterException(UCenterErrorCode.AccountLoginFailedPasswordNotMatch); } account.LastLoginDateTime = DateTime.UtcNow; account.Token = EncryptHashManager.GenerateToken(); await this.Database.Accounts.UpsertAsync(account, token); await this.RecordLogin(account, UCenterErrorCode.Success, token : token); return(this.CreateSuccessResult(this.ToResponse <AccountLoginResponse>(account))); }
//------------------------------------------------------------------------- public override void init() { EbLog.Note("ClientSampleApp.init()"); EntityMgr.getDefaultEventPublisher().addHandler(Entity); // EtUCenterSDK示例 var et_ucentersdk = EntityMgr.createEntity <EtUCenterSDK>(null, Entity); var co_ucentersdk = et_ucentersdk.getComponent <ClientUCenterSDK <DefUCenterSDK> >(); co_ucentersdk.UCenterDomain = "http://cragonucenter.chinacloudsites.cn/"; // 注册 AccountRegisterInfo register_request = new AccountRegisterInfo(); register_request.AccountName = "aaaaabbbb"; register_request.Password = "******"; register_request.SuperPassword = "******"; //co_ucentersdk.register(register_request, _onUCenterRegister); // 登录 AccountLoginInfo login_request = new AccountLoginInfo(); login_request.AccountName = "aaaaabbbb"; login_request.Password = "******"; //co_ucentersdk.login(login_request, _onUCenterLogin); // 游客登录 co_ucentersdk.guest(_onUCenterGuestLogin); // 游客帐号转正 AccountConvertInfo convert_info = new AccountConvertInfo(); convert_info.AccountId = "01e94810-ce14-4fff-9c06-16a77990e12c"; convert_info.AccountName = "asdfg"; convert_info.OldPassword = ""; convert_info.Password = ""; convert_info.SuperPassword = ""; convert_info.Sex = Sex.Unknown; convert_info.Name = ""; convert_info.IdentityNum = ""; convert_info.PhoneNum = ""; convert_info.Email = ""; //co_ucentersdk.convert(convert_info, _onUCenterConvert); // 重置密码 AccountResetPasswordInfo resetpassword_request = new AccountResetPasswordInfo(); login_request.AccountName = "aaaaabbbb"; login_request.Password = "******"; //co_ucentersdk.resetPassword(resetpassword_request, _onUCenterResetPassword); // 上传图片 string account_id = "1111"; byte[] buffer = new byte[100]; MemoryStream ms = new MemoryStream(buffer); //co_ucentersdk.uploadProfileImage(account_id, ms, _onUCenterUploadProfileImage); }
public async Task <IHttpActionResult> Test(AccountLoginInfo info) { Logger.Info($"Account.Test"); var accounts = await this.DatabaseContext.Bucket.QueryAsync <AccountEntity>(a => a.AccountName == "Ny7IBHtK"); return(await Task.FromResult(CreateSuccessResult(accounts))); }
public async Task <AccountLoginResponse> AccountLoginAsync(AccountLoginInfo info) { var url = GenerateApiEndpoint("account", "login"); var response = await httpClient.SendAsyncWithException <AccountLoginInfo, AccountLoginResponse>(HttpMethod.Post, url, info); return(response); }
//------------------------------------------------------------------------- void _requestLogin(string acc, string pwd) { AccountLoginInfo request = new AccountLoginInfo(); request.AccountName = acc; request.Password = pwd; //UiHelper.CreateWaiting(); CoApp.CoUCenter.login(request, _onUCenterLogin); }
public async Task <IHttpActionResult> Login([FromBody] AccountLoginInfo info) { Logger.Info($"Account.Login AccountName={info.AccountName}"); var accountResourceByName = await this.DatabaseContext.Bucket.GetByEntityIdSlimAsync <AccountResourceEntity>( AccountResourceEntity.GenerateResourceId(AccountResourceType.AccountName, info.AccountName), false); AccountEntity account = null; if (accountResourceByName != null) { // this means the temp value still exists, we can directly get the account by account id. account = await this.DatabaseContext.Bucket.GetByEntityIdSlimAsync <AccountEntity>( accountResourceByName.AccountId); } else { // this means the temp value not exists any more, meanwhile, it have passed a period after the account created // so the index should be already created and we can query the entity by query string account = await this.DatabaseContext.Bucket.FirstOrDefaultAsync <AccountEntity>( a => a.AccountName == info.AccountName); } if (account == null) { throw new UCenterException(UCenterErrorCode.AccountNotExist); } if (!EncryptHashManager.VerifyHash(info.Password, account.Password)) { await this.RecordLogin(account, UCenterErrorCode.AccountLoginFailedPasswordNotMatch, "The account name and password do not match"); throw new UCenterException(UCenterErrorCode.AccountLoginFailedPasswordNotMatch); } account.LastLoginDateTime = DateTime.UtcNow; account.Token = EncryptHashManager.GenerateToken(); await this.DatabaseContext.Bucket.UpsertSlimAsync(account); await this.RecordLogin(account, UCenterErrorCode.Success); return(CreateSuccessResult(ToResponse <AccountLoginResponse>(account))); }
public async Task <IActionResult> Login([FromBody] AccountLoginInfo info, CancellationToken token) { if (info == null || string.IsNullOrEmpty(info.AccountName)) { throw new UCenterException(UCenterErrorCode.InvalidAccountName); } logger.LogInformation("Login AccName={0}", info.AccountName); var accountEntity = await this.Database.Accounts.GetSingleAsync(a => a.AccountName == info.AccountName, token); if (accountEntity == null) { await this.TraceAccountErrorAsync( info.AccountName, UCenterErrorCode.AccountNotExist, "The account does not exist", token); throw new UCenterException(UCenterErrorCode.AccountNotExist); } if (string.IsNullOrEmpty(info.Password) || !EncryptHelper.VerifyHash(info.Password, accountEntity.Password)) { await this.TraceAccountErrorAsync( accountEntity, UCenterErrorCode.AccountPasswordUnauthorized, "The account name and password do not match", token); throw new UCenterException(UCenterErrorCode.AccountPasswordUnauthorized); } await AccountLoginAsync(accountEntity, token); if (info.Device != null && !string.IsNullOrEmpty(info.Device.Id)) { await LogDeviceInfo(info.Device, token); } await this.TraceAccountEvent(accountEntity, "Login", info.Device, token : token); return(this.CreateSuccessResult(this.ToResponse <AccountLoginResponse>(accountEntity))); }
//------------------------------------------------------------------------- public void login(AccountLoginInfo request, OnUCenterLogin handler) { if (WWWLogin != null) { return; } LoginHandler = new Action <UCenterResponseStatus, AccountLoginResponse, UCenterError>(handler); string http_url = _genUrl("login"); string param = EbTool.jsonSerialize(request); byte[] bytes = Encoding.UTF8.GetBytes(param); Dictionary <string, string> headers = _genHeader(bytes.Length); WWWLogin = new WWW(http_url, bytes, headers); }
public async Task E2E_AppClient_Reset_Password_Test() { var registerResponse = await CreateTestAccount(); var resetInfo = new AccountResetPasswordInfo { AccountId = registerResponse.AccountId, Password = "******", SuperPassword = ValidAccountPassword }; var resetPasswordResponse = await cClient.AccountResetPasswordAsync(resetInfo); var loginInfo = new AccountLoginInfo { AccountName = registerResponse.AccountName, Password = ValidAccountPassword }; TestExpector.ExpectUCenterErrorAsync(UCenterErrorCode.AccountLoginFailedPasswordNotMatch, async() => { await cClient.AccountLoginAsync(loginInfo); }); }
//------------------------------------------------------------------------- public override void init() { EbLog.Note("ClientSampleApp.init()"); EntityMgr.getDefaultEventPublisher().addHandler(Entity); // EtUCenterSDK示例 var et_ucentersdk = EntityMgr.createEntity <EtUCenterSDK>(null, Entity); var co_ucentersdk = et_ucentersdk.getComponent <ClientUCenterSDK <DefUCenterSDK> >(); //co_ucentersdk.UCenterDomain = "http://ucenter.playql.com/"; co_ucentersdk.UCenterDomain = "http://ucenterdev.cragon.cn"; // 获取Ip所在地 //co_ucentersdk.getIpAddress(_onUCenterGetIpAddress); // 获取AppConfig //co_ucentersdk.getAppConfig("texaspoker", _onUCenterGetAppConfig); // 注册 AccountRegisterInfo register_request = new AccountRegisterInfo(); register_request.AccountName = "aaaaabbbb"; register_request.Password = "******"; register_request.SuperPassword = "******"; //co_ucentersdk.register(register_request, _onUCenterRegister); // 登录 AccountLoginInfo login_request = new AccountLoginInfo(); login_request.AccountName = "lion"; login_request.Password = "******"; login_request.Device = _getDeviceInfo(); //co_ucentersdk.login(login_request, _onUCenterLogin); // 游客登录 GuestAccessInfo guestAccessInfo = new GuestAccessInfo() { AppId = "fishing", Device = new DeviceInfo() { Id = "U3DSample", } }; co_ucentersdk.guestAccess(guestAccessInfo, _onUCenterGuestAccess); // 游客帐号转正 //GuestConvertInfo convert_info = new GuestConvertInfo(); //convert_info.AccountId = "dc798b4a-e43d-447f-896e-beba9439e3d0"; //convert_info.AccountName = "sample_user"; //convert_info.Password = ""; //convert_info.SuperPassword = ""; //convert_info.Gender = Gender.DeclineToState; //convert_info.Name = ""; //convert_info.Identity = ""; //convert_info.Phone = ""; //convert_info.Email = ""; //co_ucentersdk.guestConvert(convert_info, _onUCenterConvert); // 重置密码 AccountResetPasswordInfo resetpassword_request = new AccountResetPasswordInfo(); login_request.AccountName = "aaaaabbbb"; login_request.Password = "******"; //co_ucentersdk.resetPassword(resetpassword_request, _onUCenterResetPassword); // 上传图片 //string account_id = "8402633f-d6b0-4f13-9348-594f350d266b"; //byte[] buffer = new byte[100]; //MemoryStream ms = new MemoryStream(buffer); //co_ucentersdk.uploadProfileImage(account_id, ms, _onUCenterUploadProfileImage); }