aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Users/UserPolicy.cs
blob: 3634d0705835cf1fb1da9ee2f3b11a0637966c14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#nullable disable
#pragma warning disable CS1591, CA1819

using System;
using System.Xml.Serialization;
using Jellyfin.Data.Enums;
using AccessSchedule = Jellyfin.Data.Entities.AccessSchedule;

namespace MediaBrowser.Model.Users
{
    public class UserPolicy
    {
        public UserPolicy()
        {
            IsHidden = true;

            EnableContentDeletion = false;
            EnableContentDeletionFromFolders = Array.Empty<string>();

            EnableSyncTranscoding = true;
            EnableMediaConversion = true;

            EnableMediaPlayback = true;
            EnableAudioPlaybackTranscoding = true;
            EnableVideoPlaybackTranscoding = true;
            EnablePlaybackRemuxing = true;
            ForceRemoteSourceTranscoding = false;
            EnableLiveTvManagement = true;
            EnableLiveTvAccess = true;

            // Without this on by default, admins won't be able to do this
            // Improve in the future
            EnableLiveTvManagement = true;

            EnableSharedDeviceControl = true;

            BlockedTags = Array.Empty<string>();
            BlockUnratedItems = Array.Empty<UnratedItem>();

            EnableUserPreferenceAccess = true;

            AccessSchedules = Array.Empty<AccessSchedule>();

            LoginAttemptsBeforeLockout = -1;

            MaxActiveSessions = 0;

            EnableAllChannels = true;
            EnabledChannels = Array.Empty<Guid>();

            EnableAllFolders = true;
            EnabledFolders = Array.Empty<Guid>();

            EnabledDevices = Array.Empty<string>();
            EnableAllDevices = true;

            EnableContentDownloading = true;
            EnablePublicSharing = true;
            EnableRemoteAccess = true;
            SyncPlayAccess = SyncPlayUserAccessType.CreateAndJoinGroups;
        }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is administrator.
        /// </summary>
        /// <value><c>true</c> if this instance is administrator; otherwise, <c>false</c>.</value>
        public bool IsAdministrator { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is hidden.
        /// </summary>
        /// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value>
        public bool IsHidden { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is disabled.
        /// </summary>
        /// <value><c>true</c> if this instance is disabled; otherwise, <c>false</c>.</value>
        public bool IsDisabled { get; set; }

        /// <summary>
        /// Gets or sets the max parental rating.
        /// </summary>
        /// <value>The max parental rating.</value>
        public int? MaxParentalRating { get; set; }

        public string[] BlockedTags { get; set; }

        public bool EnableUserPreferenceAccess { get; set; }

        public AccessSchedule[] AccessSchedules { get; set; }

        public UnratedItem[] BlockUnratedItems { get; set; }

        public bool EnableRemoteControlOfOtherUsers { get; set; }

        public bool EnableSharedDeviceControl { get; set; }

        public bool EnableRemoteAccess { get; set; }

        public bool EnableLiveTvManagement { get; set; }

        public bool EnableLiveTvAccess { get; set; }

        public bool EnableMediaPlayback { get; set; }

        public bool EnableAudioPlaybackTranscoding { get; set; }

        public bool EnableVideoPlaybackTranscoding { get; set; }

        public bool EnablePlaybackRemuxing { get; set; }

        public bool ForceRemoteSourceTranscoding { get; set; }

        public bool EnableContentDeletion { get; set; }

        public string[] EnableContentDeletionFromFolders { get; set; }

        public bool EnableContentDownloading { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [enable synchronize].
        /// </summary>
        /// <value><c>true</c> if [enable synchronize]; otherwise, <c>false</c>.</value>
        public bool EnableSyncTranscoding { get; set; }

        public bool EnableMediaConversion { get; set; }

        public string[] EnabledDevices { get; set; }

        public bool EnableAllDevices { get; set; }

        public Guid[] EnabledChannels { get; set; }

        public bool EnableAllChannels { get; set; }

        public Guid[] EnabledFolders { get; set; }

        public bool EnableAllFolders { get; set; }

        public int InvalidLoginAttemptCount { get; set; }

        public int LoginAttemptsBeforeLockout { get; set; }

        public int MaxActiveSessions { get; set; }

        public bool EnablePublicSharing { get; set; }

        public Guid[] BlockedMediaFolders { get; set; }

        public Guid[] BlockedChannels { get; set; }

        public int RemoteClientBitrateLimit { get; set; }

        [XmlElement(ElementName = "AuthenticationProviderId")]
        public string AuthenticationProviderId { get; set; }

        public string PasswordResetProviderId { get; set; }

        /// <summary>
        /// Gets or sets a value indicating what SyncPlay features the user can access.
        /// </summary>
        /// <value>Access level to SyncPlay features.</value>
        public SyncPlayUserAccessType SyncPlayAccess { get; set; }
    }
}