Ejemplo n.º 1
0
 public JsonResult Register (RegisterPostModel model)
 {
     var result = new RegisterPostResult();
     using(WebDbContext db = DbContextFactory.CreateDbContext())
     {
         if(db.Accounts.Any(a => a.UserName == model.UserName))
         { 
             throw new HttpException("已存在同名用户了"); 
         } else
         {
             var acc = new Account
             {
                 UserName = model.UserName,
                 Password = model.Password,
                 CreateTime = DateTime.Now,
                 Credits = 0,
                 IsAuthorized = false, 
                 IsFrozen = false,
                 UserType = UserType.Customer,
                 Level = CustomerLevel.Guest,
                 QQ = model.QQ,
                 Tel = model.Tel,
                 Mail = model.Mail,
                 MachineInfo = model.MachineInfo,
                 Token = TokenHelper.MakeToken()
             };
             db.Accounts.Add(acc);
             db.SaveChanges();
             result.Credits = acc.Credits;
             result.IsAuthorized = acc.IsAuthorized; 
             result.IsFrozen = acc.IsFrozen;
             result.Level = acc.Level;
             result.UserId = acc.Id;
             result.UserType = acc.UserType;
             result.IsOk = true;
             result.Token = acc.Token;
         }
     }
     return new JsonResult {Data = result};
 }
        private async Task <IAccount> InstantiateLocalAccount(
            IOwinEnvironment environment,
            RegisterPostModel postData,
            IEnumerable <string> fieldNames,
            Dictionary <string, object> customFields,
            IClient client,
            Func <string, CancellationToken, Task> errorHandler,
            CancellationToken cancellationToken)
        {
            var viewModel          = new RegisterViewModelBuilder(_configuration.Web.Register).Build();
            var suppliedFieldNames = fieldNames?.ToArray() ?? new string[] {};

            bool hasConfirmPasswordField = viewModel.Form.Fields.Where(f => f.Name == "confirmPassword").Any();

            if (hasConfirmPasswordField)
            {
                if (postData.Password != postData.ConfirmPassword)
                {
                    await errorHandler($"Passwords do not match.", cancellationToken);

                    return(null);
                }
            }

            foreach (var field in viewModel.Form.Fields)
            {
                if (field.Required && !suppliedFieldNames.Contains(field.Name, StringComparer.Ordinal))
                {
                    await errorHandler($"{field.Label} is required.", cancellationToken);

                    return(null);
                }
            }

            var  givenNameField      = viewModel.Form.Fields.Where(f => f.Name == "givenName").SingleOrDefault();
            bool isGivenNameRequired = givenNameField?.Required ?? false;

            if (string.IsNullOrEmpty(postData.GivenName) && !isGivenNameRequired)
            {
                postData.GivenName = "UNKNOWN";
            }

            var  surnameField      = viewModel.Form.Fields.Where(f => f.Name == "surname").SingleOrDefault();
            bool isSurnameRequired = surnameField?.Required ?? false;

            if (string.IsNullOrEmpty(postData.Surname) && !isSurnameRequired)
            {
                postData.Surname = "UNKNOWN";
            }

            var enabledFields = viewModel.Form.Fields.Select(f => f.Name);

            var undefinedFields = suppliedFieldNames
                                  .Concat(customFields.Select(f => f.Key))
                                  .Except(enabledFields);

            if (undefinedFields.Any())
            {
                await errorHandler($"Unknown field '{undefinedFields.First()}'.", cancellationToken);

                return(null);
            }

            var newAccount = client.Instantiate <IAccount>()
                             .SetEmail(postData.Email)
                             .SetPassword(postData.Password)
                             .SetGivenName(postData.GivenName)
                             .SetSurname(postData.Surname);

            if (!string.IsNullOrEmpty(postData.Username))
            {
                newAccount.SetUsername(postData.Username);
            }

            if (!string.IsNullOrEmpty(postData.MiddleName))
            {
                newAccount.SetMiddleName(postData.MiddleName);
            }

            foreach (var item in customFields)
            {
                newAccount.CustomData.Put(item.Key, item.Value);
            }

            return(newAccount);
        }
Ejemplo n.º 3
0
 public void Post([FromBody] RegisterPostModel userPostModel)        //pentru creare de User
 {
     userService.Create(userPostModel);
 }
Ejemplo n.º 4
0
 public IActionResult Register([FromBody]RegisterPostModel registerModel)
 {
     var user = _userService.Register(registerModel);
     return Ok(user);
 }