Beispiel #1
0
        //public Boolean UpdateOrganizationsAssocation(Int32 idUser, UrlMacAuthenticationProvider provider, List<dtoMacUrlUserAttribute> attributes)
        //{
        //    Boolean saved = false;
        //    try
        //    {
        //        Manager.BeginTransaction();
        //        Person person = Manager.GetPerson(idUser);
        //        if (person != null)
        //        {
        //            List<OrganizationAttributeItem> items = provider.GetOrganizationsInfo(attributes);

        //            List<OrganizationAttribute> oAttributes = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(OrganizationAttribute)).Select(p => (OrganizationAttribute)p).ToList();
        //            List<String> userCodes = new List<String>();
        //            List<Int32> idOrganizations = new List<Int32>();
        //            foreach (dtoMacUrlUserAttribute uAtt in attributes.Where(a => a.Type == UrlMacAttributeType.organization && !String.IsNullOrEmpty(a.QueryValue)).ToList())
        //            {
        //                OrganizationAttribute oAtt = oAttributes.Where(a => a.Id == uAtt.Id).FirstOrDefault();
        //                if (oAtt != null)
        //                {
        //                    if (oAtt.AllowMultipleValue)
        //                        userCodes.AddRange(uAtt.QueryValue.Split(oAtt.MultipleValueSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList());
        //                    else
        //                        userCodes.Add(uAtt.QueryValue);
        //                }
        //                idOrganizations.AddRange(oAtt.Items.Where(i => i.Deleted == BaseStatusDeleted.None && userCodes.Contains(i.RemoteCode)).Select(i => i.IdOrganization).ToList());
        //            }

        //            List<OrganizationProfiles> associations = (from a in Manager.GetIQ<OrganizationProfiles>()
        //                                                        where a.Profile.Id== idUser
        //                                                         select a).ToList();
        //            //foreach (lm.Comol.Core.Catalogues.CataloguePersonAssignment assignment in assignments)
        //            //{
        //            //    if (idCatalogues.Contains(assignment.Id) && !assignment.Allowed)
        //            //    {
        //            //        assignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress);
        //            //        if (assignment.Deleted != BaseStatusDeleted.None)
        //            //        {
        //            //            assignment.FromProvider = true;
        //            //            assignment.Deleted = BaseStatusDeleted.None;
        //            //        }
        //            //        assignment.Allowed = true;
        //            //        Manager.SaveOrUpdate(assignment);
        //            //    }
        //            //    else if (!idCatalogues.Contains(assignment.Id) && assignment.Deleted == BaseStatusDeleted.None && assignment.Allowed && assignment.FromProvider)
        //            //    {
        //            //        assignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress);
        //            //        assignment.Allowed = false;
        //            //        Manager.SaveOrUpdate(assignment);
        //            //    }
        //            //}
        //            //foreach (long idCatalogue in idCatalogues.Where(i => !assignments.Select(a => a.Id).ToList().Contains(i)).ToList())
        //            //{
        //            //    lm.Comol.Core.Catalogues.CataloguePersonAssignment pAssignment = new Catalogues.CataloguePersonAssignment();
        //            //    pAssignment.UpdateMetaInfo(person, UC.IpAddress, UC.ProxyIpAddress);
        //            //    pAssignment.FromProvider = true;
        //            //    pAssignment.AssignedTo = person;
        //            //    pAssignment.Allowed = true;
        //            //    Manager.SaveOrUpdate(pAssignment);
        //            //}
        //            saved = true;
        //        }
        //        Manager.Commit();
        //    }

        //    catch (Exception ex)
        //    {
        //        saved = false;
        //        Manager.RollBack();
        //    }

        //    return saved;
        //}

        public dtoExternalCredentials GetCredentials(MacUrlAuthenticationProvider provider, List <dtoMacUrlUserAttribute> attributes)
        {
            dtoExternalCredentials credentials = new dtoExternalCredentials();

            if (attributes.Where(a => a.isIdentifier).Any())
            {
                credentials.IdentifierString = attributes.Where(a => a.isIdentifier).FirstOrDefault().QueryValue;
            }
            else
            {
                UserProfileAttribute pAttribute = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(UserProfileAttribute)).Where(p => ((UserProfileAttribute)p).Attribute == ProfileAttributeType.externalId).Select(p => (UserProfileAttribute)p).FirstOrDefault();
                if (pAttribute != null)
                {
                    credentials.IdentifierString = attributes.Where(i => i.Type == UrlMacAttributeType.profile && i.Id == pAttribute.Id).Select(i => i.QueryValue).FirstOrDefault();
                }
                else
                {
                    CompositeProfileAttribute cmpAttribute = provider.Attributes.Where(p => p.Deleted == BaseStatusDeleted.None && p.GetType() == typeof(CompositeProfileAttribute)).Where(p => ((CompositeProfileAttribute)p).Attribute == ProfileAttributeType.externalId).Select(p => (CompositeProfileAttribute)p).FirstOrDefault();
                    if (!cmpAttribute.Items.Where(i => i.Deleted == BaseStatusDeleted.None).Any())
                    {
                        credentials.IdentifierString = "";
                    }
                    else
                    {
                        credentials.IdentifierString = (attributes.Where(i => i.Id == cmpAttribute.Id).Any()) ? attributes.Where(i => i.Id == cmpAttribute.Id).Select(i => i.QueryValue).FirstOrDefault() : "";
                    }
                }
            }
            return(credentials);
        }
        private Boolean AddAuthentication(Person person, dtoBaseProfile profile, dtoImportSettings settings, ProfileAttributesRow row, AuthenticationProvider provider)
        {
            Boolean result = false;

            if (provider.ProviderType == AuthenticationProviderType.Internal)
            {
                InternalLoginInfo info = InternalService.GenerateUserInfo(person, profile.Login, profile.Password, (InternalAuthenticationProvider)provider, false);
                result = (info != null);
            }
            else
            {
                dtoExternalCredentials credentials = new dtoExternalCredentials();
                if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((int)provider.IdentifierFields, (int)IdentifierField.longField))
                {
                    long identifierLong = 0;
                    long.TryParse(row.GetCellValue(ProfileAttributeType.externalId), out identifierLong);
                    credentials.IdentifierLong = identifierLong;
                }
                if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((int)provider.IdentifierFields, (int)IdentifierField.stringField))
                {
                    credentials.IdentifierString = row.GetCellValue(ProfileAttributeType.externalId);
                }

                if (UrlService.VerifyDuplicateExternalLoginInfo(person, provider, credentials) == ProfilerError.none)
                {
                    ExternalLoginInfo externaLogin = UrlService.AddExternalProfile(person, provider, credentials);
                    result = (externaLogin != null);
                }
            }
            return(result);
        }
        public void SaveExternalProvider(long idProvider, dtoExternalCredentials credentials)
        {
            long          idLoginInfo = View.CurrentIdLoginInfo;
            ProfilerError message     = Service.VerifyExternalInfoDuplicate(View.idProfile, idProvider, credentials);

            if (message == ProfilerError.none)
            {
                if (idLoginInfo == 0)
                {
                    message = Service.AddExternalLogin(View.idProfile, idProvider, credentials);
                }
                else
                {
                    message = Service.UpdateExternalLogin(idLoginInfo, credentials);
                }

                if (message == ProfilerError.none)
                {
                    if (idLoginInfo == 0)
                    {
                        Person person = CurrentManager.GetPerson(View.idProfile);
                        if (person != null)
                        {
                            View.idDefaultProvider = person.IdDefaultProvider;
                        }
                        SetupOtherProviders();
                    }
                    LoadAuthenticationItems();
                }
                else if (message == ProfilerError.externalUniqueIDduplicate)
                {
                    View.DisplayProfilerExternalError(message);
                }
                else
                {
                    View.DisplayError(message);
                }
            }
            else
            {
                View.DisplayProfilerExternalError(message);
            }
        }
Beispiel #4
0
        public virtual ProfilerError VerifyDuplicateExternalLoginInfo(Person person, AuthenticationProvider provider, dtoExternalCredentials credentials)
        {
            var query = (from ei in Manager.GetIQ <ExternalLoginInfo>() where ei.Deleted == BaseStatusDeleted.None && ei.Provider == provider && ei.Person != null && ei.Person != person select ei);

            if ((provider.IdentifierFields & IdentifierField.longField) > 0 && query.Where(ei => ei.IdExternalLong == credentials.IdentifierLong).Any())
            {
                return(ProfilerError.externalUniqueIDduplicate);
            }
            else if ((provider.IdentifierFields & IdentifierField.stringField) > 0)
            {
                List <String> multipleIdentifiers = null;
                if (provider.MultipleItemsForRecord && !string.IsNullOrEmpty(provider.MultipleItemsSeparator))
                {
                    multipleIdentifiers = credentials.IdentifierString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                    List <ExternalLoginInfo> items = new List <ExternalLoginInfo>();
                    foreach (String idn in multipleIdentifiers)
                    {
                        items.AddRange(query.Where(q => q.IdExternalString.Contains(idn)).ToList());
                    }
                    if ((provider.IdentifierFields & IdentifierField.longField) > 0)
                    {
                        items = items.Where(i => i.IdExternalLong == credentials.IdentifierLong).ToList();
                    }
                    Boolean found = false;
                    foreach (ExternalLoginInfo item in items)
                    {
                        found = item.IdExternalString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList().Where(v => multipleIdentifiers.Contains(v)).Any();
                        if (found)
                        {
                            break;
                        }
                    }
                    return((found) ? ProfilerError.externalUniqueIDduplicate : ProfilerError.none);
                }
                else
                {
                    return((query.Where(ei => ei.IdExternalString == credentials.IdentifierString).Any()) ? ProfilerError.externalUniqueIDduplicate : ProfilerError.none);
                }
            }
            else
            {
                return(ProfilerError.none);
            }
        }
Beispiel #5
0
        public virtual List <ProfilerError> VerifyProfileInfo(dtoBaseProfile profile, AuthenticationProvider provider, dtoExternalCredentials credentials)
        {
            List <ProfilerError> result = new List <ProfilerError>();

            if (provider != null)
            {
                if (provider.ProviderType == AuthenticationProviderType.Internal && (from ei in Manager.GetIQ <InternalLoginInfo>()
                                                                                     where ei.Provider == provider && ei.Login == profile.Login
                                                                                     select ei.Id).Any())
                {
                    result.Add(ProfilerError.loginduplicate);
                }
                else if ((from ei in Manager.GetIQ <ExternalLoginInfo>()
                          where ei.Provider == provider && ei.IdExternalLong == credentials.IdentifierLong && (ei.IdExternalString == credentials.IdentifierString)
                          select ei.Id).Any())
                {
                    result.Add(ProfilerError.externalUniqueIDduplicate);
                }
            }
            return(result);
        }
Beispiel #6
0
        public virtual List <ProfilerError> VerifyProfileInfo(dtoBaseProfile profile, long idProvider, dtoExternalCredentials credentials)
        {
            List <ProfilerError> result = new List <ProfilerError>();

            if (!isUniqueMail(profile.Mail))
            {
                result.Add(ProfilerError.mailDuplicate);
            }
            if (!String.IsNullOrEmpty(profile.TaxCode) && !isUniqueTaxCode(profile.TaxCode))
            {
                result.Add(ProfilerError.taxCodeDuplicate);
            }


            result.AddRange(VerifyProfileInfo(profile, Manager.Get <AuthenticationProvider>(idProvider), credentials));
            return(result);
        }
Beispiel #7
0
 public ExternalLoginInfo AddExternalProfile(Int32 IdPerson, long idProvider, dtoExternalCredentials credentials)
 {
     return(ProfileService.AddExternalProfile(IdPerson, idProvider, credentials));
 }
Beispiel #8
0
 public CompanyUser AddCompanyUser(CompanyUser profile, long idProvider, dtoExternalCredentials credentials)
 {
     return(ProfileService.AddCompanyUser(profile, idProvider, credentials));
 }
Beispiel #9
0
 public Employee AddEmployee(Employee profile, long idProvider, dtoExternalCredentials credentials)
 {
     return(ProfileService.AddEmployee(profile, idProvider, credentials));
 }
        public ExternalLoginInfo AddExternalProfile(Person person, AuthenticationProvider provider, dtoExternalCredentials credentials)
        {
            ExternalLoginInfo account = null;

            try
            {
                Manager.BeginTransaction();
                Person currentUser = Manager.GetPerson(UC.CurrentUserID);

                List <ExternalLoginInfo> accounts = (from si in Manager.GetIQ <ExternalLoginInfo>() where si.Provider == provider && si.Person == person select si).ToList();

                if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField) && lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.stringField))
                {
                    account = accounts.Where(a => a.IdExternalLong == credentials.IdentifierLong && a.IdExternalString == credentials.IdentifierString).FirstOrDefault();
                }
                else if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField))
                {
                    account = accounts.Where(a => a.IdExternalLong == credentials.IdentifierLong).FirstOrDefault();
                }
                else
                {
                    List <String> multipleIdentifiers = null;
                    if (provider.MultipleItemsForRecord && !string.IsNullOrEmpty(provider.MultipleItemsSeparator))
                    {
                        multipleIdentifiers = credentials.IdentifierString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                    }

                    if (multipleIdentifiers == null || multipleIdentifiers.Count == 0)
                    {
                        account = accounts.Where(a => a.IdExternalString.ToLower() == credentials.IdentifierString.ToLower()).FirstOrDefault();
                    }
                    else
                    {
                        foreach (ExternalLoginInfo item in accounts)
                        {
                            List <String> itemIdentifiers = item.IdExternalString.Split(provider.MultipleItemsSeparator.ToArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                            if (itemIdentifiers.Where(i => multipleIdentifiers.Contains(i)).Any())
                            {
                                String tmp = credentials.IdentifierString;
                                credentials.IdentifierString = item.IdExternalString;
                                account = item;
                                multipleIdentifiers.Where(mi => !itemIdentifiers.Contains(mi)).ToList().ForEach(i => credentials.IdentifierString += provider.MultipleItemsSeparator + i);
                                break;
                            }
                        }
                    }
                }


                if (account == null)
                {
                    account = CreateAccount(person, currentUser, provider, credentials);
                }
                else
                {
                    UpdateAccount(account, person, currentUser, provider, credentials);
                }
                Manager.SaveOrUpdate(account);
                AddToHistory(account);
                if (person.IdDefaultProvider == 0 || String.IsNullOrEmpty(person.FirstLetter))
                {
                    if (person.IdDefaultProvider == 0)
                    {
                        person.IdDefaultProvider = provider.Id;
                    }
                    if (String.IsNullOrEmpty(person.FirstLetter))
                    {
                        person.FirstLetter = person.Surname[0].ToString().ToLower();
                    }
                    Manager.SaveOrUpdate(person);
                }


                Manager.Commit();
            }
            catch (Exception ex)
            {
            }
            return(account);
        }
        protected void UpdateAccount(ExternalLoginInfo account, Person person, Person currentUser, AuthenticationProvider provider, dtoExternalCredentials credentials)
        {
            account.UpdateMetaInfo((currentUser == null) ? person : currentUser, UC.IpAddress, UC.ProxyIpAddress);

            if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.longField))
            {
                account.IdExternalLong = credentials.IdentifierLong;
            }
            if (lm.Comol.Core.DomainModel.PermissionHelper.CheckPermissionSoft((long)provider.IdentifierFields, (long)IdentifierField.stringField))
            {
                account.IdExternalString = credentials.IdentifierString;
            }
            account.isEnabled = !person.isDisabled;
            account.Deleted   = BaseStatusDeleted.None;
        }
 public void AddAuthenticationProvider(int IdUser, long idProvider, dtoExternalCredentials credentials)
 {
 }