Exemplo n.º 1
0
        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); });
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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)));
        }
Exemplo n.º 5
0
    //-------------------------------------------------------------------------
    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);
    }
Exemplo n.º 6
0
        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)));
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        //-------------------------------------------------------------------------
        void _requestLogin(string acc, string pwd)
        {
            AccountLoginInfo request = new AccountLoginInfo();

            request.AccountName = acc;
            request.Password    = pwd;
            //UiHelper.CreateWaiting();
            CoApp.CoUCenter.login(request, _onUCenterLogin);
        }
Exemplo n.º 9
0
        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)));
        }
Exemplo n.º 10
0
        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)));
        }
Exemplo n.º 11
0
        //-------------------------------------------------------------------------
        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);
        }
Exemplo n.º 12
0
        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); });
        }
Exemplo n.º 13
0
        //-------------------------------------------------------------------------
        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);
        }