示例#1
0
        public async Task RunAsync(IRestContext context)
        {
            // IUserApi provides all functions for user management
            IUserApi userApi = context.Factory.CreateUserApi();

            // getSession()
            Session session = await userApi.GetSessionAsync();
            Console.WriteLine("Session ID: [{0}...]", session.SessionId.Substring(0, 32));

            // getProfile()
            ProfileResponse profile = await userApi.GetProfileAsync();
            Console.WriteLine("Email from your profile: {0}", profile.Email);

            // register()
            string guid = Guid.NewGuid().ToString();
            Register register = new Register
            {
                FirstName = guid.Substring(0, 6),
                LastName = guid.Substring(0, 6),
                Email = guid.Substring(0, 6) + "@factory.com",
                Name = guid.Substring(0, 6),
                NewPassword = guid.Substring(0, 6)
            };
            bool ok = await userApi.RegisterAsync(register, true);

            if (ok)
            {
                Console.WriteLine("Successfully registered user: {0}", guid.Substring(0,8));
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Unfortunately, something went wrong.");
            }
        }
示例#2
0
        public async Task<bool> RegisterAsync(Register register, bool login = false)
        {
            if (register == null)
            {
                throw new ArgumentNullException("register");
            }

            var address = baseAddress.WithResource("register");
            if (login)
            {
                address = address.WithParameter("login", true);
            }

            string content = contentSerializer.Serialize(register);
            IHttpRequest request = new HttpRequest(HttpMethod.Post,
                                                   address.Build(),
                                                   baseHeaders,
                                                   content);

            IHttpResponse response = await httpFacade.RequestAsync(request);
            HttpUtils.ThrowOnBadStatus(response, contentSerializer);

            var success = new { success = false };
            success = contentSerializer.Deserialize(response.Body, success);

            if (success.success && login)
            {
                Session session = await GetSessionAsync();
                baseHeaders.AddOrUpdate(HttpHeaders.DreamFactorySessionTokenHeader, session.session_id);
            }

            return success.success;
        }
        public void RegisterShouldChangeBaseHeadersIfLoginTrue()
        {
            // Arrange
            HttpHeaders headers;
            IUserApi userApi = CreateUserApi(out headers);
            Register register = new Register
            {
                Email = "*****@*****.**",
                FirstName = "first",
                LastName = "last",
                Name = "display",
                NewPassword = "******"
            };

            // Act
            userApi.RegisterAsync(register, true).Wait();

            // Assert
            Dictionary<string, object> dictionary = headers.Build();
            dictionary.ContainsKey(HttpHeaders.DreamFactorySessionTokenHeader).ShouldBe(true);
        }
示例#4
0
        public async Task<bool> RegisterAsync(Register register, bool login = false)
        {
            if (register == null)
            {
                throw new ArgumentNullException("register");
            }

            SqlQuery query = new SqlQuery { Fields = null };
            query.CustomParameters.Add("login", login);

            RegisterResponse response = await base.RequestWithPayloadAsync<Register, RegisterResponse>(
                method: HttpMethod.Post,
                resource: "register",
                query: query,
                payload: register
                );

            if ((response.Success ?? false) && login)
            {
                base.BaseHeaders.AddOrUpdate(HttpHeaders.DreamFactorySessionTokenHeader, response.SessionToken);
            }

            return response.Success ?? false;
        }
        public void ShouldRegisterAsync()
        {
            // Arrange
            IUserApi userApi = CreateUserApi();
            Register register = new Register
            {
                Email = "*****@*****.**",
                FirstName = "first",
                LastName = "last",
                Name = "display",
                NewPassword = "******"
            };

            // Act
            bool ok = userApi.RegisterAsync(register).Result;

            // Assert
            ok.ShouldBe(true);

            Should.Throw<ArgumentNullException>(() => userApi.RegisterAsync(null));
        }
示例#6
0
        public void ShouldRegisterAsync()
        {
            // Arrange
            IUserApi userApi = CreateUserApi();
            Register register = new Register
            {
                email = "*****@*****.**",
                first_name = "first",
                last_name = "last",
                display_name = "display",
                new_password = "******"
            };

            // Act
            bool ok = userApi.RegisterAsync(register).Result;

            // Assert
            ok.ShouldBe(true);
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                Register register = new Register
                {
                    Email = model.Email,
                    FirstName = model.FirstName,
                    LastName = model.LastName,
                    Name = model.Name,
                    NewPassword = model.Password
                };

                bool result;
                try
                {
                    result = await userApi.RegisterAsync(register);
                }
                catch (DreamFactoryException)
                {
                    result = false;
                }

                if (result)
                {
                    Session session = new Session();
                    try
                    {
                        session = await userApi.LoginAsync(model.Email, model.Password);
                    }
                    catch (DreamFactoryException) {;}

                    if (string.IsNullOrEmpty(session.SessionId))
                    {
                        return RedirectToAction("Login", "Account");
                    }

                    SignIn(session, false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("", "There has been an error registering your account.");
                }
            }
            return View(model);
        }