コード例 #1
0
        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 }));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
    /// <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);
        }
    }