Example #1
0
 public void ValidateUser(User user, InvitationCode invitationCode)
 {
     if (!EmailIsUnique(user.Email))
     {
         throw new UserException("El email ya está en uso");
     }
     if (MailIsEmpty(user.Email))
     {
         throw new UserException("El email no puede ser vacío");
     }
     if (!ValidPasswordLenght(user.Password))
     {
         throw new UserException("El largo de la contraseña debe ser mayor o igual que 6");
     }
     if (!IsAlphaNumeric(user.Password))
     {
         throw new UserException("La contraseña debe ser alfanumérica");
     }
     if (!ValidInvitationCode(invitationCode))
     {
         throw new UserException("El codigo de invitación no es correcto");
     }
     if (!IsAlphaNumeric(invitationCode.Code))
     {
         throw new UserException("El codigo de invitación debe ser alfanumérico");
     }
 }
Example #2
0
        public void RegisterInvitationCodeReturnsCreatedAtRouteTest()
        {
            var invitationCode = new InvitationCode()
            {
                Code       = "AA245GJ5",
                ParentUser = new User()
                {
                    Name     = "fartolaa",
                    Password = "******",
                    Email    = "*****@*****.**",
                    IsAdmin  = true
                }
            };
            var mockInvitationCodeLogic = new Mock <IInvitationCodeLogic>();

            mockInvitationCodeLogic.Setup(x => x.GenerateCode(It.IsAny <User>()))
            .Returns(invitationCode);
            var controller = new InvitationCodeController(mockInvitationCodeLogic.Object);

            IHttpActionResult actionResult = controller.PostInvitationCode(invitationCode.ParentUser);

            var contentResult = Assert.IsType <CreatedAtRouteNegotiatedContentResult <InvitationCode> >(actionResult);

            Assert.NotNull(contentResult);

            Assert.Equal(contentResult.Content, invitationCode);
        }
        public InvitationCode GenerateCode(User administator)
        {
            if (administator.IsAdmin == false)
            {
                throw new InvitationCodeException("Solo administaradores pueden generar codigos");
            }

            var exisitngCodes = UnitOfWork.InvitationCodeRepository.Get();

            var newInvitationCode = new InvitationCode()
            {
                Code         = RandomAlphanumericString(8),
                ParentUserId = administator.Id
            };

            while (exisitngCodes.IsNotEmpty() && exisitngCodes.Any(c => c.Code == newInvitationCode.Code))
            {
                newInvitationCode.Code = RandomAlphanumericString(8);
            }

            UnitOfWork.InvitationCodeRepository.Insert(newInvitationCode);
            UnitOfWork.Save();

            return(newInvitationCode);
        }
Example #4
0
 public bool IsValidCode(InvitationCode invitationCode)
 {
     return
         (invitationCode != null &&
          _invitationCodeRepository.Get(invitationCode.Id) != null &&
          !invitationCode.IsUsed);
 }
Example #5
0
        public ActionResult Register(string code = "")
        {
            InvitationCode invitationCode = new InvitationCode();
            //PublicUserModel loginUser = this.GetLoginUser();
            //if (loginUser != null && loginUser.UserID > 0)
            //{
            //    return Redirect("/Home");
            //}

            List <Regions> regionList = ncBase.CurrentEntities.Regions.Where(r => r.Layer == 1).ToList();

            ViewData["RegionList"] = regionList;

            if (ConfigUtility.GetBoolValue("InvitationRegister") || !string.IsNullOrEmpty(code))
            {
                invitationCode =
                    ncBase.CurrentEntities.InvitationCode.Where(o => o.Code == code && o.IsUsed == false)
                    .FirstOrDefault();
                if (invitationCode.IsNull())
                {
                    return(RedirectToAction("InvitationRegister", "User"));
                }
            }

            return(View(invitationCode));
        }
Example #6
0
        public void InsertSingleInvitationCodeTest()
        {
            var userData           = GetUserList();
            var userSet            = new Mock <DbSet <User> >().SetupData(userData);
            var invitationCodeData = GetInvitationCodeList();
            var invitationCodeSet  = new Mock <DbSet <InvitationCode> >().SetupData(invitationCodeData);

            var context = new Mock <Context>();

            context.Setup(ctx => ctx.Set <User>()).Returns(userSet.Object);
            context.Setup(ctx => ctx.Set <InvitationCode>()).Returns(invitationCodeSet.Object);

            var unitOfWork     = new UnitOfWork(context.Object);
            var invitationCode = new InvitationCode()
            {
                Code       = "AA245GJ9",
                IsDeleted  = false,
                ParentUser = new User()
                {
                    Name      = "test1",
                    Password  = "******",
                    Email     = "*****@*****.**",
                    IsAdmin   = false,
                    IsDeleted = false,
                },
            };

            unitOfWork.InvitationCodeRepository.Insert(invitationCode);

            var result = unitOfWork.InvitationCodeRepository.GetAll();

            Assert.True(result.IsNotEmpty());
        }
        public InvitationCode Generate(string emailAdress)
        {
            _invitationCodeRepository.DbContext.BeginTransaction();
            InvitationCode ic = Generate(emailAdress, null, Guid.NewGuid().ToString());

            _invitationCodeRepository.DbContext.CommitTransaction();
            return(ic);
        }
Example #8
0
 private bool CheckFields()
 {
     if (InvitationCode.Equals(string.Empty))
     {
         throw new Exception("Please fill in the field");
     }
     return(true);
 }
 public InvitationRevokedEvent(InvitationId invitationId, GroupId groupId, InvitationCode invitationCode, ExpirationTime expirationTime, UsageCounter usageCounter)
 {
     InvitationId   = invitationId;
     GroupId        = groupId;
     InvitationCode = invitationCode;
     ExpirationTime = expirationTime;
     UsageCounter   = usageCounter;
 }
Example #10
0
        public async Task HandleAsync(JoinGroupCommand command)
        {
            var invitationCode = InvitationCode.From(command.Code);
            var invitation     = await _invitationRepository.GetAsync(invitationCode) ?? throw new InvalidInvitationCodeException(command.Code);

            var group = await _groupRepository.GetAsync(invitation.GroupId) ?? throw new GroupNotFoundException(invitation.GroupId);

            invitation.Use(UserId.From(command.UserId), group, _clock);
        }
Example #11
0
 public void InactivateInvitationCode(string invitationCode)
 {
     using (var context = new IgorMarkivMessengerDBEntities())
     {
         InvitationCode invitation = context.InvitationCode.Where(inv => inv.code == invitationCode).FirstOrDefault();
         invitation.used = true;
         context.SaveChanges();
     }
 }
Example #12
0
        public bool IsValidCode(string invitationCode)
        {
            IDictionary <string, object> propertyValues = new Dictionary <string, object> {
                { "Code", invitationCode }
            };
            InvitationCode ic = _invitationCodeRepository.FindOne(propertyValues);

            return(IsValidCode(ic));
        }
Example #13
0
        public async Task <IActionResult> OnPostAsync(Guid?id)
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            Organization = await _context.Organizations.Include(o => o.Users).FirstOrDefaultAsync(m => m.Id == id);

            var existingUser = await _userManager.FindByEmailAsync(Input.Email);

            if (existingUser != null)
            {
                if (!Organization.Users.Any(u => u.UserId == existingUser.Id))
                {
                    Organization.Users.Add(new OrganizationUser {
                        OrganizationId = Organization.Id, UserId = existingUser.Id, OrganizationRole = Input.Role
                    });
                    await _context.SaveChangesAsync();
                }
                else
                {
                    return(RedirectToPage("./Details", new { Id = Organization.Id }));
                }
            }
            else
            {
                var invitationCode = new InvitationCode
                {
                    Code         = Guid.NewGuid(),
                    CreateDate   = DateTime.UtcNow,
                    Email        = Input.Email,
                    InitialRole  = Input.Role,
                    Organization = Organization
                };

                _context.InvitationCodes.Add(invitationCode);
                await _context.SaveChangesAsync();

                var callbackUrl = Url.Page(
                    "/Account/Register",
                    pageHandler: null,
                    values: new { area = "Identity", code = invitationCode.Code },
                    protocol: Request.Scheme);

                await _emailSender.SendEmailAsync(
                    Input.Email,
                    $"Приглашение в {Organization.Name}",
                    $"Зарегистрируйтесь, перейдя по <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>ссылке</a>.");
            }

            return(RedirectToPage("./Details", new { Id = Organization.Id }));
        }
Example #14
0
        private static void Build(EntityTypeBuilder <Invitation> invitation)
        {
            invitation.ToTable("Invitations");
            invitation.HasKey(x => x.Id)
            .HasName("PK_Invitations");
            invitation.Property(x => x.Id)
            .HasConversion(x => x.Value, x => InvitationId.From(x))
            .ValueGeneratedNever()
            .HasColumnName("InvitationId")
            .IsRequired();
            invitation.Property(x => x.GroupId).IsRequired();
            invitation.HasOne <Group>()
            .WithMany()
            .HasForeignKey(x => x.GroupId)
            .HasConstraintName("FK_Invitations_Groups")
            .IsRequired();

            invitation.OwnsOne <ExpirationTimeContainer>(
                "_expirationTime",
                b =>
            {
                b.Property <ExpirationTimeType>("_type")
                .HasConversion <string>()
                .IsRequired().HasColumnName("ExpirationTimeType");
                b.Property <DateTimeOffset>("_start").IsRequired().HasColumnName("ExpirationStart");
                b.Property <TimeSpan?>("_period").IsRequired(false).HasColumnName("ExpirationPeriod");
                b.Ignore(x => x.ExpirationTime);
            }
                );
            invitation.Ignore(x => x.ExpirationTime);

            invitation.OwnsOne <UsageCounterContainer>(
                "_usageCounter",
                b =>
            {
                b.Property <UsageCounterType>("_type")
                .HasConversion <string>()
                .IsRequired().HasColumnName("UsageCounterType");
                b.Property <int?>("_value").IsRequired(false).HasColumnName("UsageCounter");
                b.Ignore(x => x.UsageCounter);
            }
                );
            invitation.Ignore(x => x.UsageCounter);

            invitation.HasIndex(x => x.InvitationCode)
            .IsUnique();

            invitation.Property(x => x.InvitationCode)
            .HasConversion(x => x.Value, x => InvitationCode.From(x))
            .HasMaxLength(8)
            .IsRequired();
        }
        public InvitationCodeAddOrUpdateResponseDto AddOrUpdate(InvitationCodeAddOrUpdateRequestDto request)
        {
            var entity = _repository.GetAll()
                         .FirstOrDefault(x => x.Id == request.Id && x.IsDeleted == false);

            if (entity == null)
            {
                _repository.Add(entity = new InvitationCode());
            }
            entity.Code = request.Code;
            _uow.SaveChanges();
            return(new InvitationCodeAddOrUpdateResponseDto(entity));
        }
        public void CreateInvitationCodes()
        {
            InvitationCodeRepository icr = new InvitationCodeRepository();

            icr.DbContext.BeginTransaction();

            for (int i = 0; i < 1000; i++)
            {
                InvitationCode ic = new InvitationCode();
                ic.Code = Guid.NewGuid().ToString();
                icr.SaveOrUpdate(ic);
            }

            icr.DbContext.CommitTransaction();
        }
        public bool Remove(int id)
        {
            InvitationCode invitationCode = db.InvitationCodes.FirstOrDefault(c => c.Id == id);

            if (invitationCode != null)
            {
                db.InvitationCodes.Remove(invitationCode);
                db.SaveChanges();
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #18
0
        public void RegisterUserTest(string name, string email, string password, string ic)
        {
            InvitationCode invitationCode = new InvitationCode();

            invitationCode.Code = ic;
            // Arrange
            var mockUnitOfWork = new Mock <IUnitOfWork>();

            mockUnitOfWork.Setup(un => un.InvitationCodeRepository.Get(It.IsAny <Expression <Func <InvitationCode, bool> > >(), null, It.IsAny <string>()))
            .Returns(new List <InvitationCode>()
            {
                invitationCode
            });
            mockUnitOfWork.Setup(un => un.UserRepository.Insert(It.IsAny <User>()));
            mockUnitOfWork.Setup(un => un.InvitationCodeRepository.Delete(It.IsAny <InvitationCode>()));
            mockUnitOfWork.Setup(un => un.Save());

            IUserLogic userLogic = new UserLogic(mockUnitOfWork.Object);

            User user = new User()
            {
                Name     = name,
                Email    = email,
                Password = password
            };

            try
            {
                var response = userLogic.RegisterUser(user, invitationCode);
                //Assert
                mockUnitOfWork.Verify(un => un.UserRepository.Insert(It.IsAny <User>()), Times.Exactly(1));
                mockUnitOfWork.Verify(un => un.Save(), Times.Exactly(1));
                Assert.True(response);
            }
            catch (UserException ue)
            {
                //For debug purposes
                var exceptionMessage = ue.Message;
                // If test gets to this assert then it failed
                Assert.True(false);
            }
            catch (Exception ex)
            {
                //For debug purposes
                var exceptionMessage = ex.Message;
                Assert.True(false);
            }
        }
Example #19
0
        public JsonResult CheckInvitation(string code)
        {
            if (!string.IsNullOrEmpty(code))
            {
                InvitationCode invitationCode =
                    ncBase.CurrentEntities.InvitationCode.Where(o => o.Code == code && o.IsUsed == false)
                    .FirstOrDefault();

                if (invitationCode.IsNoNull())
                {
                    return(Json(new { exists = 1 }));
                }
                return(Json(new { exists = 0 }));
            }
            return(Json(new { exists = 0 }));
        }
Example #20
0
 public bool RegisterUser(User user, InvitationCode invitationCode)
 {
     try
     {
         ValidateUser(user, invitationCode);
         UnitOfWork.UserRepository.Insert(user);
         var invitationCodeFromDb = UnitOfWork.InvitationCodeRepository.Get(i => i.Code == invitationCode.Code).SingleOrDefault();
         UnitOfWork.InvitationCodeRepository.Delete(invitationCodeFromDb);
         UnitOfWork.Save();
         return(true);
     }
     catch (Exception e)
     {
         throw new UserException(e.Message);
     }
 }
Example #21
0
        public void RegisterValidationsTest1(string name, string email, string password, string ic)
        {
            //Arrange
            var mockUnitOfWork = new Mock <IUnitOfWork>();

            mockUnitOfWork.Setup(un => un.InvitationCodeRepository.Insert(It.IsAny <InvitationCode>()));
            mockUnitOfWork.Setup(un => un.UserRepository.Get(null, null, null));


            IUserLogic userLogic = new UserLogic(mockUnitOfWork.Object);

            var invitationCode = new InvitationCode()
            {
                Code = ic
            };

            mockUnitOfWork.Object.InvitationCodeRepository.Insert(invitationCode);

            var user = new User()
            {
                Name     = name,
                Email    = email,
                Password = password
            };
            bool throwUserException = false;

            try
            {
                userLogic.ValidateUser(user, invitationCode);
                // If test gets to this assert then it failed
                throwUserException = false;
            }
            catch (UserException ue)
            {
                //For debug purposes
                var exceptionMessage = ue.Message;
                // If test gets to this assert then its correct
                throwUserException = true;
            }
            catch (Exception ex)
            {
                //For debug purposes
                var exceptionMessage = ex.Message;
                throwUserException = false;
            }
            Assert.True(throwUserException);
        }
        public InvitationCode Generate(string emailAdress, BasicUser invitedBy, string registrationCode)
        {
            if (_invitationValidatorService.MailExists(emailAdress))
            {
                throw new MailAlreadyExistsException();
            }

            //Create a new RegistrationCode
            InvitationCode ic = new InvitationCode
            {
                EmailAddress = emailAdress.Trim().ToLower(),
                Code         = registrationCode.Trim(),
                InvitedBy    = invitedBy
            };

            _invitationCodeRepository.SaveOrUpdate(ic);
            return(ic);
        }
Example #23
0
        public ActionResult AddInvitationCode(FormCollection form)
        {
            string tels  = form["tel"];
            string names = form["name"];

            if (!string.IsNullOrEmpty(tels))
            {
                string[] arrs     = tels.Split(',');
                string[] arrnames = !string.IsNullOrEmpty(names)?names.Split(','): null;

                for (int i = 0; i < arrs.LongLength; i++)
                {
                    try
                    {
                        InvitationCode invitationCode = new InvitationCode();
                        invitationCode.Code       = StringUtility.GetSubfix();
                        invitationCode.BindTel    = arrs[i];
                        invitationCode.Invitee    = (arrnames.IsNoNull() && arrnames.Length > i ? arrnames[i] : "");
                        invitationCode.IsUsed     = false;
                        invitationCode.UsedTime   = Convert.ToDateTime("1900-1-1");
                        invitationCode.CreateTime = DateTime.Now;
                        invitationCode.VipType    = 2;
                        ncBase.CurrentEntities.AddToInvitationCode(invitationCode);
                        ncBase.CurrentEntities.SaveChanges();
                    }
                    catch (Exception)
                    {
                        InvitationCode invitationCode = new InvitationCode();
                        invitationCode.Code       = StringUtility.GetSubfix();
                        invitationCode.BindTel    = arrs[i];
                        invitationCode.Invitee    = (arrnames.IsNoNull() && arrnames.Length > i ? arrnames[i] : "");
                        invitationCode.IsUsed     = false;
                        invitationCode.UsedTime   = Convert.ToDateTime("1900-1-1");
                        invitationCode.CreateTime = DateTime.Now;
                        invitationCode.VipType    = 2;
                        ncBase.CurrentEntities.AddToInvitationCode(invitationCode);
                        ncBase.CurrentEntities.SaveChanges();
                    }
                }
            }


            return(RedirectToAction("InvitationCodeList"));
        }
        public InvitationCode Create(int teamId, string code)
        {
            InvitationCode duplicationCode = db.InvitationCodes.FirstOrDefault(c => c.Code == code);

            if (code != "" && duplicationCode == null)
            {
                Team           team           = db.Teams.FirstOrDefault(t => t.Id == teamId);
                InvitationCode invitationCode = new InvitationCode {
                    Team = team, Code = code
                };
                db.InvitationCodes.Add(invitationCode);
                db.SaveChanges();
                return(invitationCode);
            }
            else
            {
                return(null);
            }
        }
Example #25
0
        public ActionResult Index(string emailAdress)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    InvitationCode invitationCode = _invitationCodeGeneratorService.Generate(emailAdress);
                    _messageSenderService.SendWithTemplate("InvitationRequest", null, invitationCode.Code, invitationCode.EmailAddress);
                    TempData["message"] = "We have just send you an invitation code to your email address. You can enter it here to start creating your closet!";
                    return(RedirectToAction("Index", "Home"));
                }
                catch (MailAlreadyExistsException)
                {
                    ModelState.AddModelError("emailAdress", "Email address already used.");
                }
            }

            return(View());
        }
Example #26
0
        public void RegisterValidationsTest2(string name, string email, string password, string ic)
        {
            InvitationCode invitationCode = new InvitationCode();

            invitationCode.Code = ic;
            //Arrange
            var mockUnitOfWork = new Mock <IUnitOfWork>();

            mockUnitOfWork.Setup(un => un.InvitationCodeRepository.Get(It.IsAny <Expression <Func <InvitationCode, bool> > >(), null, ""))
            .Returns(new List <InvitationCode>()
            {
                invitationCode
            });
            mockUnitOfWork.Setup(un => un.UserRepository.Get(null, null, null));

            IUserLogic userLogic = new UserLogic(mockUnitOfWork.Object);

            User user = new User();

            user.Name     = name;
            user.Email    = email;
            user.Password = password;
            try
            {
                userLogic.ValidateUser(user, invitationCode);
                // If test gets to this assert then its correct
                Assert.True(true);
            }
            catch (UserException ue)
            {
                //For debug purposes
                var exceptionMessage = ue.Message;
                // If test gets to this assert then it failed
                Assert.True(false);
            }
            catch (Exception ex)
            {
                //For debug purposes
                var exceptionMessage = ex.Message;
                Assert.True(false);
            }
        }
Example #27
0
        public ActionResult AddNewUser(string tel)
        {
            InvitationCode invitationCode = ncBase.CurrentEntities.InvitationCode.Where(o => o.BindTel == tel && o.IsUsed == false).FirstOrDefault();

            if (invitationCode.IsNull())
            {
                invitationCode            = new InvitationCode();
                invitationCode.Code       = StringUtility.GetSubfix();
                invitationCode.BindTel    = tel;
                invitationCode.Invitee    = "";
                invitationCode.IsUsed     = false;
                invitationCode.UsedTime   = Convert.ToDateTime("1900-1-1");
                invitationCode.CreateTime = DateTime.Now;
                invitationCode.VipType    = 2;
                ncBase.CurrentEntities.AddToInvitationCode(invitationCode);
                ncBase.CurrentEntities.SaveChanges();
            }
            ViewBag.Code = invitationCode.Code;
            return(View());
        }
Example #28
0
        public ActionResult SendInvitationCode(int codeId)
        {
            string smsContent = "现诚邀{0}注册使用“房产盒子”_免费房产网络营销软件,邀请码:{1} ,访问 http://fcHeZi.com 开通使用。";

            InvitationCode invitationCode = ncBase.CurrentEntities.InvitationCode.Where(o => o.CodeId == codeId).FirstOrDefault();

            if (invitationCode.IsNoNull() && !string.IsNullOrEmpty(invitationCode.BindTel))
            {
                SendResult sendResult = smsApi.SendSms(invitationCode.BindTel, string.Format(smsContent, invitationCode.Invitee, invitationCode.Code), (Purpose)8, "【房产盒子】");
                if (sendResult.Status == Status.Success)
                {
                    invitationCode.IsSend = true;
                    ncBase.CurrentEntities.SaveChanges();
                    return(Content("1"));
                }
            }


            return(Content("0"));
        }
        public async Task <VMInvitation> CreateAsync()
        {
            DateTimeOffset?expiration = null;

            if (Config.Invitations?.Expiry.HasValue ?? false)
            {
                expiration = DateTimeOffset.Now + Config.Invitations.Expiry.Value;
            }

            var invitation = new InvitationCode
            {
                Expiration = expiration
            };

            await DbContext.AddAsync(invitation);

            await DbContext.SaveChangesAsync();

            return(await ReadAsync(invitation.Id));
        }
Example #30
0
        public JsonResult UserUpdatePwd(PublicUserModel user, string code)
        {
            InvitationCode invitationEntity = new InvitationCode();


            #region 表单验证
            if (string.IsNullOrEmpty(user.Tel))
            {
                return(Json(new { status = 1, msg = "手机号不能为空" }));
            }

            if (string.IsNullOrEmpty(code) || Session["Phone_Code" + user.Tel] == null || (code != "" && Session["Phone_Code" + user.Tel] != null && code != Session["Phone_Code" + user.Tel].ToString()))
            {
                return(Json(new { status = 1, msg = "验证码错误" }));
            }


            if (string.IsNullOrEmpty(user.Password) || (user.Password != null && user.Password.Length < 6))
            {
                return(Json(new { status = 1, msg = "密码至少6位数" }));
            }


            #endregion
            UserBll         userBll   = new UserBll();
            PublicUserModel checkUser = userBll.getUserByTel(user.Tel);
            if (checkUser != null && checkUser.UserID > 0)
            {
                int row = userBll.UpdateUserPassword(checkUser.UserID, user.Password);
                if (row > 0)
                {
                    return(Json(new { status = 0, msg = "修改成功" }));
                }
                else
                {
                    return(Json(new { status = 1, msg = "修改失败" }));
                }
            }

            return(Json(new { status = 1, msg = "帐号不存在" }));
        }