Exemplo n.º 1
0
        bool IUserTaskManager.ResetPassword(Guid tenantId, Guid userId)
        {
            var queryFilter = new List <QueryFilter>();

            queryFilter.Add(new QueryFilter {
                FieldName = "TenantId", Operator = "Equal", Value = tenantId.ToString()
            });
            queryFilter.Add(new QueryFilter {
                FieldName = "InternalId", Operator = "Equal", Value = userId.ToString()
            });
            var queryContext = new QueryContext {
                Fields = "FirstName,LastName,MiddleName,UserCredential.Username", Filters = queryFilter, PageSize = 100, PageIndex = 1, MaxResult = 1
            };

            byte[] passwordHash, passwordSalt;
            Random random = new Random();
            int    pass   = random.Next(1000000);

            // pass=1234;
            SqlMembershipProvider.CreatePasswordHash(pass.ToString(), out passwordHash, out passwordSalt);
            DataTable dataTableUser = _iEntityResourceManager.GetResultById(tenantId, "user", userId, queryContext);
            User      userEntity    = EntityMapper <User> .Mapper(dataTableUser);

            if (Guid.Parse(userEntity.InternalId.Value) == Guid.Empty)
            {
                return(false);
            }
            CredentialInfo credentialData = crd.GetCredential(tenantId, Guid.Parse(userEntity.InternalId.Value));
            var            jObject        = DataUtility.ConvertToJObjectList(dataTableUser);

            jObject[0].Add(new JProperty("UserCredential.Username", credentialData.UserName.ToString()));
            jObject[0].Add(new JProperty("UserCredential.Password", pass.ToString()));
            var emailTemplate = _iEntityResourceManager.GetWellKnownTemplate(tenantId, "emailtemplate", "user", (int)ContextTypeEnum.Forgotpassword, jObject[0]);

            if (emailTemplate != null && emailTemplate.Body != null)
            {
                CredentialInfo usercredentialinfo = crd.GetCredential(tenantId, userId);
                bool           isnew = _sqlMembership.CheckResetOnFirstLogin(tenantId);
                crd.Update(tenantId, new CredentialInfo
                {
                    CredentialId = credentialData.CredentialId,
                    ParentId     = Guid.Parse(userEntity.InternalId.Value),
                    PasswordHash = Convert.ToBase64String(passwordHash),
                    PasswordSalt = Convert.ToBase64String(passwordSalt),
                    IsNew        = isnew
                });
                var returnVal = DataUtility.SaveEmail(tenantId, Guid.Parse(userEntity.InternalId.Value), emailTemplate, credentialData.UserName.ToString(), "ResetPassword", InfoType.User);
            }
            else
            {
                return(false);
            }

            return(true);
        }