예제 #1
0
        public string GetSocialSecurityNumber(string username)
        {
            var personSession = _ticketProvider.GetWsSession();
            // Search for persons
            var persons = _personService.searchPersonsFromRoot(new searchPersonsFromRootRequest
            {
                session  = personSession,
                filter   = $"(uid={username})",
                attrList = new string[] { }
            });

            if (persons?.searchPersonsFromRootReturn == null || persons.searchPersonsFromRootReturn.Length == 0)
            {
                return(string.Empty);
            }

            var attributes   = persons.searchPersonsFromRootReturn[0].attributes;
            var personNumber = attributes.FirstOrDefault(a => a.name == "personnumber")?.values?[0];

            return(personNumber);
        }
예제 #2
0
        public async Task InactivateUserAsync(string userName)
        {
            var itimUserDn = await _securityRepo.GetPersonObjectIdByNameAsync(userName);

            await _personService.suspendPersonAsync(_ticketProvider.GetWsSession(), itimUserDn);
        }
예제 #3
0
        public async Task AddUserToOrganizationAsync(UserCore user, CustomerBasicInfo customer, string[] roleIds = null)
        {
            if (roleIds == null)
            {
                roleIds = new string[0];
            }

            var personSearch = _personService.searchPersonsFromRoot(new searchPersonsFromRootRequest
            {
                session  = WsSession,
                filter   = $"(uid={user.UserName})",
                attrList = new string[] { }
            });

            var person = personSearch?.searchPersonsFromRootReturn?.FirstOrDefault();

            if (person == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var userOrganizations = person.attributes?
                                    .FirstOrDefault(a => a.name == "lmorg")?.values?
                                    .Where(r => r != customer.CustomerNo)
                                    .ToList() ?? new List <string>();

            userOrganizations.Add(customer.CustomerNo);
            var newOrgs = userOrganizations.ToArray();

            var addOrgResponse = await _personService.modifyPersonAsync(new modifyPersonRequest
            {
                session  = _ticketProvider.GetWsSession(),
                personDN = person.itimDN,
                wsAttrs  = new[] { new WSAttribute {
                                       name = "lmorg", values = newOrgs
                                   } }
            });

            await _wsRequestService.WaitForCompletion(WsSession, addOrgResponse.modifyPersonReturn.requestId);

            var userOrgRoles = person.attributes?
                               .FirstOrDefault(a => a.name == "lmorgroles")?.values?
                               .Where(r => !r.StartsWith($"{customer.CustomerNo};"))
                               //filter out all roles already in the org
                               .ToList() ?? new List <string>();


            userOrgRoles.AddRange(roleIds.Select(rid => $"{customer.CustomerNo};{rid}"));
            var newRoles = userOrgRoles.ToArray();

            var addRoleResponse = await _personService.modifyPersonAsync(new modifyPersonRequest
            {
                session  = _ticketProvider.GetWsSession(),
                personDN = person.itimDN,
                wsAttrs  = new[] { new WSAttribute {
                                       name = "lmorgroles", values = newRoles
                                   } }
            });

            await _wsRequestService.WaitForCompletion(WsSession, addRoleResponse.modifyPersonReturn.requestId);
        }