Back to Devexpress

RichEditControlOptionsBase.Authentication Property

officefileapi-devexpress-dot-xtrarichedit-dot-richeditcontroloptionsbase-ceb8aa02.md

latest7.4 KB
Original Source

RichEditControlOptionsBase.Authentication Property

Provides access to an object used to specify the identity parameters for range editing permissions.

Namespace : DevExpress.XtraRichEdit

Assembly : DevExpress.RichEdit.v25.2.Core.dll

NuGet Package : DevExpress.RichEdit.Core

Declaration

csharp
public AuthenticationOptions Authentication { get; }
vb
Public ReadOnly Property Authentication As AuthenticationOptions

Property Value

TypeDescription
AuthenticationOptions

An AuthenticationOptions class instance that holds identity parameters.

|

Property Paths

You can access this nested property as listed below:

Object TypePath to Authentication
IRichEditDocumentServer

.Options .Authentication

| | RichEditDocumentServer |

.Options .Authentication

|

Remarks

This code snippet demonstrates how you can fetch usernames assigned to protected ranges in a document and identify the current user as being one of the particular users. It allows you to edit the range with editing permissions granted to that user.

The SubDocument.BeginUpdateRangePermissions method is used to get all permissions for document ranges. Call the SubDocument.CancelUpdateRangePermissions if you do not intend to modify them.

Then, we traverse the collection of range permissions and obtain user names via the RangePermission.UserName property. The ComboBoxEdit control is filled with the names, so an existing name can be selected to log in.

To log in (i.e. to specify the user whose permissions will be in effect), the RichEditControlOptionsBase.Authentication options are used.

csharp
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using DevExpress.XtraRichEdit.Services;
        void richEditControl1_DocumentLoaded(object sender, EventArgs e)
        {
            UpdateUserNameLoginCombo();
            richEditControl1.Options.Authentication.UserName = String.Empty;
        }
        private void UpdateUserNameLoginCombo()
        {
            cmbUserName.SelectedValueChanged-=cmbUserName_SelectedValueChanged;
            RangePermissionCollection rangePermissions = richEditControl1.Document.BeginUpdateRangePermissions();
            richEditControl1.Document.CancelUpdateRangePermissions(rangePermissions);
            List<String> users = new List<string>();
            foreach (RangePermission rangePermission in rangePermissions)
            {
                string userName = rangePermission.UserName;
                if (users.Contains(userName))
                    continue;
                if (!String.IsNullOrEmpty(userName))
                    users.Add(userName);
            }
            cmbUserName.Properties.BeginUpdate();
            cmbUserName.Properties.Items.Clear();
            cmbUserName.Properties.Items.Add(String.Empty);
            cmbUserName.Properties.Items.AddRange(users);
            foreach (MyUser user in myUserList) {
                if (!users.Contains(user.UserName)) cmbUserName.Properties.Items.Add(user.UserName);
            }
            cmbUserName.SelectedIndex = 0;
            cmbUserName.Properties.EndUpdate();
            cmbUserName.SelectedValueChanged += cmbUserName_SelectedValueChanged;
        }

        private void cmbUserName_SelectedValueChanged(object sender, EventArgs e)
        {
            string username = cmbUserName.SelectedItem.ToString();
            richEditControl1.Options.Authentication.UserName = username;
            MyUser myuser = myUserList.Find(s => s.UserName == username);
            richEditControl1.Options.Authentication.Group = (myuser != null) ? myuser.Group : String.Empty;

        }
vb
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.API.Native
Imports DevExpress.XtraRichEdit.Services
        Private Sub richEditControl1_DocumentLoaded(ByVal sender As Object, ByVal e As EventArgs)
            UpdateUserNameLoginCombo()
            richEditControl1.Options.Authentication.UserName = String.Empty
        End Sub
        Private Sub UpdateUserNameLoginCombo()
            RemoveHandler cmbUserName.SelectedValueChanged, AddressOf cmbUserName_SelectedValueChanged
            Dim rangePermissions As RangePermissionCollection = richEditControl1.Document.BeginUpdateRangePermissions()
            richEditControl1.Document.CancelUpdateRangePermissions(rangePermissions)
            Dim users As New List(Of String)()
            For Each rangePermission As RangePermission In rangePermissions
                Dim userName As String = rangePermission.UserName
                If users.Contains(userName) Then
                    Continue For
                End If
                If Not String.IsNullOrEmpty(userName) Then
                    users.Add(userName)
                End If
            Next rangePermission
            cmbUserName.Properties.BeginUpdate()
            cmbUserName.Properties.Items.Clear()
            cmbUserName.Properties.Items.Add(String.Empty)
            cmbUserName.Properties.Items.AddRange(users)
            For Each user As MyUser In myUserList
                If Not users.Contains(user.UserName) Then
                    cmbUserName.Properties.Items.Add(user.UserName)
                End If
            Next user
            cmbUserName.SelectedIndex = 0
            cmbUserName.Properties.EndUpdate()
            AddHandler cmbUserName.SelectedValueChanged, AddressOf cmbUserName_SelectedValueChanged
        End Sub

        Private Sub cmbUserName_SelectedValueChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cmbUserName.SelectedValueChanged
            Dim username As String = cmbUserName.SelectedItem.ToString()
            richEditControl1.Options.Authentication.UserName = username
            Dim myuser As MyUser = myUserList.Find(Function(s) s.UserName = username)
            richEditControl1.Options.Authentication.Group = If(myuser IsNot Nothing, myuser.Group, String.Empty)

        End Sub

See Also

BeginUpdateRangePermissions()

RichEditControlOptionsBase Class

RichEditControlOptionsBase Members

DevExpress.XtraRichEdit Namespace