public IActionResult ProcessRegistration([FromBody] RegisterPost userInfo) { if (userInfo.Password != userInfo.Confirm) { return(BadRequest(new { error = "Passwords do not match" })); } if (userInfo.Password.Count() < 8) { return(BadRequest(new { error = "Password must be at least 8 characters long" })); } if (CheckUserAlreadyExists(userInfo.Username.Trim())) { return(BadRequest(new { error = "Username already in use" })); } if (!AddUserToDB(userInfo)) { return(BadRequest(new { error = "An error occurred while trying to register :(" })); } // Success var jwt = new JWT(_context, _config, userInfo.Username).GetToken(); return(Ok(new { jwt })); }
private bool AddUserToDB(RegisterPost userInfo) { //BCrypt bundles its salt in the hash var hash = BCrypt.Net.BCrypt.HashPassword(userInfo.Password); var newUser = new Users { Username = userInfo.Username.Trim(), Hash = hash, Access = "User" }; try { _context.Users.Add(newUser); _context.SaveChanges(); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } return(true); }
public async Task <IActionResult> PostUserRegisterAsync([FromHeader] String source, [FromHeader] String authorization, [FromBody] RegisterPost item) { var response = new Response <JwtAuthorData>(); var message = string.Empty; try { var entity = await _IMemberInfosRepository.FirstOrDefaultAsync(a => a.Uid == item.uid && a.OpenId == item.openid && a.IsEnable == 1); if (entity == null) { entity = new MemberInfos(); entity.Code = SnowFlake.GetInstance().GetUniqueShortId(8); entity.NickName = item.name; entity.Name = item.name; entity.Sex = item.gender == "男" ? 1 : 0; entity.Avatar = item.iconurl; entity.Uid = item.uid; entity.OpenId = item.openid; entity.Phone = item.phone; entity.Password = Tools.Md5("000000"); entity.Beans = 0; entity.BeansTotals = 0; entity.NewsNumber = 0; entity.FollowNumber = 0; entity.FavoritesNumber = 0; entity.FansNumber = 0; entity.IsNoviceTask = 0; entity.IsEnable = 1; entity.LastLoginTime = System.DateTime.Now; entity.CreateTime = System.DateTime.Now; entity.Remarks = "微信首次登录注册。"; await _IMemberInfosRepository.AddAsync(entity); await _IMemberInfosRepository.SaveChangesAsync(); message = "初始登录密码为【000000】"; var taskNoviceLogs = await _ITaskInfoRepository.Query(a => a.IsNoviceTask == 1 && a.IsEnable == 1) .Select(a => new TaskNoviceLog() { TaskId = a.TaskId, CategoryFixed = a.CategoryFixed, CategoryDay = a.CategoryDay, MemberId = entity.MemberId, IsEnable = 1 }) .ToListAsync(); await _ITaskNoviceLogRepository.BatchAddAsync(taskNoviceLogs); } else { message = "已注册,初始登录密码为【000000】"; } var result = _IJwtRedis.Create(entity); if (result != null) { //await _IJwtRedis.DeactivateAsync(authorization); response.Code = true; response.Message = message; response.Data = result; } else { return(BadRequest("授权失败!")); } } catch (Exception ex) { response.SetError(ex, this._ILogger); } return(response.ToHttpResponse()); }
public IHttpActionResult Post(RegisterPost register) { try { var rockContext = new RockContext(); if (new UserLoginService(rockContext).GetByUserName(register.Username.Trim()) != null) { return(BadRequest("The selected username is already taken.")); } if (!UserLoginService.IsPasswordValid(register.Password.Trim())) { return(BadRequest("Password is invalid.")); } Person person = null; // Try to find person by name/email var matches = new PersonService(rockContext).GetByMatch(register.FirstName.Trim(), register.LastName.Trim(), register.Email.Trim()).ToList(); if (matches.Count == 1) { // Found them! person = matches.First(); } else { // Otherwise create the person and family record for the new person person = new Person { FirstName = register.FirstName.Trim(), LastName = register.LastName.Trim(), Email = register.Email.Trim(), IsEmailActive = true, EmailPreference = EmailPreference.EmailAllowed, RecordTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id, ConnectionStatusValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_CONNECTION_STATUS_WEB_PROSPECT.AsGuid()).Id, RecordStatusValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_PENDING.AsGuid()).Id, Gender = Gender.Unknown }; PersonService.SaveNewPerson(person, rockContext); } var user = UserLoginService.Create( rockContext, person, AuthenticationServiceType.Internal, EntityTypeCache.Read(Rock.SystemGuid.EntityType.AUTHENTICATION_DATABASE.AsGuid()).Id, register.Username.Trim(), register.Password.Trim(), false ); var mergeObjects = Rock.Lava.LavaHelper.GetCommonMergeFields(null, person); mergeObjects.Add("ConfirmAccountUrl", "https://newpointe.org/ConfirmAccount"); mergeObjects.Add("Person", person); mergeObjects.Add("User", user); Email.Send( "17aaceef-15ca-4c30-9a3a-11e6cf7e6411".AsGuid(), new List <RecipientData> { new RecipientData(person.Email, mergeObjects) }, "", "", false ); return(Ok("Success")); } catch (Exception ex) { return(InternalServerError(ex)); } }
/// <summary> /// Get Method for logging the user in. /// </summary> /// <returns></returns> public HttpResponseMessage Post(RegisterPost register) { //verify the token passed from the app is valid. Just an extra security measure tp make sure they're hitting from the app. var isAuthed = MobileAppAPIHelper.ValidateAppToken(Request); //if this check fails, return Unauthorized if (!isAuthed) return Request.CreateResponse(HttpStatusCode.Unauthorized); try { var rockContext = new RockContext(); var personService = new PersonService(rockContext); if (new UserLoginService(rockContext).GetByUserName(register.Username.Trim()) != null) { //check the username return Request.CreateResponse(HttpStatusCode.BadRequest, "The selected username is already taken."); } if (!UserLoginService.IsPasswordValid(register.Password.Trim())) { //check the password. return Request.CreateResponse(HttpStatusCode.BadRequest, "Password is invalid."); } Person person = null; Person spouse = null; Group family = null; GroupLocation homeLocation = null; var changes = new List<string>(); var spouseChanges = new List<string>(); var familyChanges = new List<string>(); // Try to find person by name/email if (person == null) { var matches = personService.GetByMatch(register.FirstName.Trim(), register.LastName.Trim(), register.Email.Trim()); if (matches.Count() == 1) { person = matches.First(); } } // Check to see if this is a new person if (person == null) { // If so, create the person and family record for the new person person = new Person(); person.FirstName = register.FirstName.Trim(); person.LastName = register.LastName.Trim(); person.Email = register.Email.Trim(); person.IsEmailActive = true; person.EmailPreference = EmailPreference.EmailAllowed; person.RecordTypeValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid()).Id; // person.ConnectionStatusValueId = DefinedValueCache.Read(GetAttributeValue("ConnectionStatus").AsGuid()).Id; // person.RecordStatusValueId = DefinedValueCache.Read(GetAttributeValue("RecordStatus").AsGuid()); person.Gender = Gender.Unknown; family = PersonService.SaveNewPerson(person, rockContext, null, false); } if (person != null) { var user = UserLoginService.Create( rockContext, person, Rock.Model.AuthenticationServiceType.Internal, EntityTypeCache.Read(Rock.SystemGuid.EntityType.AUTHENTICATION_DATABASE.AsGuid()).Id, register.Username.Trim(), register.Password.Trim(), true); //var mergeObjects = Rock.Lava.LavaHelper.GetCommonMergeFields(RockPage); //mergeObjects.Add("ConfirmAccountUrl", RootPath + "ConfirmAccount"); //var personDictionary = person.ToLiquid() as Dictionary<string, object>; //mergeObjects.Add("Person", personDictionary); //mergeObjects.Add("User", user); //var recipients = new List<Rock.Communication.RecipientData>(); //recipients.Add(new Rock.Communication.RecipientData(person.Email, // mergeObjects)); //Rock.Communication.Email.Send(GetAttributeValue("ConfirmAccountTemplate").AsGuid(), // recipients, ResolveRockUrl("~/"), ResolveRockUrl("~~/"), false); } return Request.CreateResponse(HttpStatusCode.OK, "SUccess"); } catch (Exception ex) { //todo: log the error somewhere. return Request.CreateResponse(HttpStatusCode.InternalServerError); } }