Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

AuthenticationOptions Class

Represents a set of credentials used to identify editable ranges in a protected document.

Namespace: DevExpress.XtraRichEdit

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

NuGet Package: DevExpress.RichEdit.Core

#Declaration

[ComVisible(true)]
public class AuthenticationOptions :
    RichEditNotificationOptions,
    IDisposable

The following members return AuthenticationOptions objects:

#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.

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;

        }
See Also