public async Task<IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            var user = new ApplicationUser() { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, DisplayName = model.DisplayName, Status = "In good standing", MemberSince = DateTime.Now, IsActive = true };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            if (!result.Succeeded)
            {
                return GetErrorResult(result);
            }

            //Uncomment to send an email confirmation
            string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
            code = System.Web.HttpUtility.UrlEncode(code);

            var callbackUrl = String.Format("/confirmEmail?userId={0}&code={1}", user.Id, code);
            var absoluteCallbackUrl = Request.GetUrlHelper().Content(callbackUrl);
            await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Welcome to Mixed Up!\n\nPlease confirm your account by clicking <a href=\"" + absoluteCallbackUrl + "\">here</a>");

            return Ok();
        }
Example #2
0
        public async Task<HttpResponseMessage> Register(RegisterBindingModel model)
        {
            List<string> errors = new List<string>();
            errors = ModelErrorChecker.Check(ModelState);

            if (errors.Count == 0)
            {
                var user = new User() { UserName = model.Email, Email = model.Email };

                if (UserManager.FindByEmail(model.Email) == null)
                {

                    IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                    if (!result.Succeeded)
                    {
                        return Request.CreateResponse(HttpStatusCode.NotAcceptable, result.Errors);
                    }
                }
                else
                    return Request.CreateResponse(HttpStatusCode.NotAcceptable, "Email address is already in use.");
            }
            else
                return Request.CreateResponse(HttpStatusCode.NotAcceptable, errors);

            return Request.CreateResponse(HttpStatusCode.OK);
        }