コード例 #1
0
        public virtual async Task <IScimResponse <ScimUser> > CreateUser(ScimUser user)
        {
            _CanonicalizationService.Canonicalize(user, ServerConfiguration.GetScimTypeDefinition(user.GetType()));

            var validator = await _ResourceValidatorFactory.CreateValidator(user);

            var validationResult = (await validator.ValidateCreateAsync(user)).ToScimValidationResult();

            if (!validationResult)
            {
                return(new ScimErrorResponse <ScimUser>(validationResult.Errors.First()));
            }

            if (user.Password != null)
            {
                user.Password = _PasswordManager.CreateHash(user.Password);
            }

            user.Meta = new ResourceMetadata(ScimConstants.ResourceTypes.User);

            var userRecord = await _UserRepository.CreateUser(user);

            if (userRecord == null)
            {
                return(new ScimErrorResponse <ScimUser>(
                           new ScimError(
                               HttpStatusCode.BadRequest)));
            }

            // version may require the User.Id which is often generated using database unique constraints
            // therefore, we will set the version after persistence
            SetResourceVersion(userRecord);

            return(new ScimDataResponse <ScimUser>(userRecord));
        }
コード例 #2
0
ファイル: GroupService.cs プロジェクト: kchlapinski/Owin.Scim
        public virtual async Task <IScimResponse <ScimGroup> > CreateGroup(ScimGroup group)
        {
            _CanonicalizationService.Canonicalize(group, ServerConfiguration.GetScimTypeDefinition(group.GetType()));

            var validator = await _ResourceValidatorFactory.CreateValidator(group);

            var validationResult = (await validator.ValidateCreateAsync(group)).ToScimValidationResult();

            if (!validationResult)
            {
                return(new ScimErrorResponse <ScimGroup>(validationResult.Errors.First()));
            }

            group.Meta = new ResourceMetadata(ScimConstants.ResourceTypes.Group);

            var groupRecord = await _GroupRepository.CreateGroup(group);

            SetResourceVersion(groupRecord);

            return(new ScimDataResponse <ScimGroup>(groupRecord));
        }