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); }
public void Post([FromBody] RegisterPostModel userPostModel) //pentru creare de User { userService.Create(userPostModel); }
public IActionResult Register([FromBody]RegisterPostModel registerModel) { var user = _userService.Register(registerModel); return Ok(user); }