コード例 #1
0
ファイル: ProfileService.cs プロジェクト: faorg/wwt-website
        public OperationStatus UpdateUserRoles(PermissionItem permissionItem, long updatedById)
        {
            var operationStatus = new OperationStatus();

            // Make sure input is not null
            this.CheckNotNull(() => new { permissionItem });

            try
            {
                // Need to check the current user role before updating the request.
                var currentUserRole = _userRepository.GetUserRole(updatedById, permissionItem.CommunityID);

                // 1. Leave community should check for user role.
                // 2. User should be having moderator role or higher.
                // 3. If the permission being assigned in Owner, then only owners or site administrators can update the permission.
                if (permissionItem.Role != UserRole.None && (
                        currentUserRole < UserRole.Moderator ||
                                (permissionItem.Role == UserRole.Owner && currentUserRole != UserRole.Owner && currentUserRole != UserRole.SiteAdmin)))
                {
                    operationStatus.Succeeded = false;
                    operationStatus.CustomErrorMessage = true;
                    operationStatus.ErrorMessage = Resources.NoPermissionsErrorMessage;
                }
                else
                {
                    operationStatus = _userCommunitiesRepository.UpdateUserRoles(permissionItem);
                }
            }
            catch (Exception)
            {
                // TODO: Add exception handling logic here.
                operationStatus.Succeeded = false;
                operationStatus.CustomErrorMessage = true;
                operationStatus.ErrorMessage = Resources.UnknownErrorMessage;
            }

            return operationStatus;
        }
コード例 #2
0
ファイル: ProfileService.cs プロジェクト: faorg/wwt-website
        public OperationStatus JoinCommunity(PermissionItem permissionItem)
        {
            // Make sure input is not null
            this.CheckNotNull(() => new { permissionItem });

            var operationStatus = new OperationStatus();

            try
            {
                var permissionRequest = new PermissionRequest();
                Mapper.Map(permissionItem, permissionRequest);

                permissionRequest.RequestedDate = DateTime.UtcNow;

                _permissionRequestRepository.Add(permissionRequest);
                _permissionRequestRepository.SaveChanges();
                operationStatus.Succeeded = true;
            }
            catch (Exception)
            {
                // TODO: Add exception handling logic here.
                operationStatus.Succeeded = false;
                operationStatus.CustomErrorMessage = true;
                operationStatus.ErrorMessage = Resources.UnknownErrorMessage;
            }

            return operationStatus;
        }
コード例 #3
0
ファイル: ProfileService.cs プロジェクト: faorg/wwt-website
        /// <summary>
        /// Joins the current user to community for which the invite request token was generated.
        /// </summary>
        /// <param name="userId">User who is making the join request</param>
        /// <param name="inviteRequestToken">Token to be used for joining the community</param>
        /// <returns>Status of the operation. Success, if succeeded, failure message and exception details in case of exception.</returns>
        public async Task<OperationStatus> JoinCommunity(long userId, Guid inviteRequestToken)
        {
            var operationStatus = new OperationStatus();

            try
            {
                // Find the invite request entity in database.
                var inviteRequest =  _inviteRequestRepository.GetItem(invite => invite.InviteRequestToken == inviteRequestToken, "InviteRequestContent");

                if (inviteRequest == null || inviteRequest.IsDeleted == true)
                {
                    operationStatus = OperationStatus.CreateFailureStatus(Resources.InviteDeletedErrorMessage);
                }
                else if (inviteRequest.Used == true)
                {
                    operationStatus = OperationStatus.CreateFailureStatus(Resources.InviteUsedErrorMessage);
                }
                else
                {
                    var permissionItem = new PermissionItem
                    {
                        UserID = userId,
                        CommunityID = inviteRequest.InviteRequestContent.CommunityID,
                        Role = (UserRole) inviteRequest.InviteRequestContent.RoleID
                    };

                    // Check if at all the user is already member of the same community.
                    var existingRole =  _userCommunitiesRepository.GetItem(
                                                    userCommunity => userCommunity.UserID == userId && userCommunity.CommunityId == inviteRequest.InviteRequestContent.CommunityID);

                    if (existingRole == null || inviteRequest.InviteRequestContent.RoleID > existingRole.RoleID)
                    {
                        operationStatus = _userCommunitiesRepository.UpdateUserRoles(permissionItem);
                    }
                    else
                    {
                        // Just mark OperationStatus as succeeded so that, the token will be marked as used.
                        operationStatus.Succeeded = true;
                    }

                    if (operationStatus.Succeeded)
                    {
                        inviteRequest.Used = true;
                        inviteRequest.UsedByID = userId;
                        inviteRequest.UsedDate = DateTime.UtcNow;
                        _inviteRequestRepository.Update(inviteRequest);
                        _inviteRequestRepository.SaveChanges();
                    }
                }
            }
            catch (Exception)
            {
                // TODO: Add exception handling logic here.
                operationStatus.Succeeded = false;
                operationStatus.CustomErrorMessage = true;
                operationStatus.ErrorMessage = Resources.UnknownErrorMessage;
            }

            return operationStatus;
        }
コード例 #4
0
ファイル: ProfileService.cs プロジェクト: faorg/wwt-website
        /// <summary>
        /// Removes the specified invite request.
        /// </summary>
        /// <param name="userId">User who is removing the invite request</param>
        /// <param name="inviteRequestId">Invite request to be removed</param>
        /// <returns>True if the invite request is removed, false otherwise</returns>
        public async Task<OperationStatus> RemoveInviteRequest(long userId, int inviteRequestId)
        {
            var operationStatus = new OperationStatus();

            try
            {
                // Find the invite request entity in database.
                InviteRequest inviteRequest =  _inviteRequestRepository.GetItem(ir => ir.InviteRequestID == inviteRequestId, "InviteRequestContent");

                // Check invite request is not null
                this.CheckNotNull(() => new { inviteRequest });

                var userRole = _userRepository.GetUserRole(userId, inviteRequest.InviteRequestContent.CommunityID);
                if (userRole >= UserRole.Moderator)
                {
                    inviteRequest.IsDeleted = true;
                    inviteRequest.DeletedByID = userId;
                    inviteRequest.DeletedDate = DateTime.UtcNow;
                    _inviteRequestRepository.Update(inviteRequest);
                    _inviteRequestRepository.SaveChanges();

                    operationStatus.Succeeded = true;
                }
                else
                {
                    operationStatus = OperationStatus.CreateFailureStatus(Resources.NoPermissionInviteRequestMessage);
                }
            }
            catch (Exception)
            {
                // TODO: Add exception handling logic here.
                operationStatus.Succeeded = false;
                operationStatus.CustomErrorMessage = true;
                operationStatus.ErrorMessage = Resources.UnknownErrorMessage;
            }

            return operationStatus;
        }