// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Kyoo.Abstractions.Models.Attributes; using Kyoo.Utils; using Newtonsoft.Json; namespace Kyoo.Abstractions.Models { /// /// A single user of the app. /// public class User : IResource, IAddedDate { /// public int Id { get; set; } /// [MaxLength(256)] public string Slug { get; set; } /// /// A username displayed to the user. /// public string Username { get; set; } /// /// The user email address. /// public string Email { get; set; } /// /// The user password (hashed, it can't be read like that). The hashing format is implementation defined. /// [SerializeIgnore] public string Password { get; set; } /// /// The list of permissions of the user. The format of this is implementation dependent. /// public string[] Permissions { get; set; } = Array.Empty(); /// public DateTime AddedDate { get; set; } /// /// A logo is a small image representing the resource. /// public Image? Logo { get; set; } /// /// The list of shows the user has finished. /// [SerializeIgnore] public ICollection? Watched { get; set; } /// /// The list of episodes the user is watching (stopped in progress or the next episode of the show) /// [SerializeIgnore] public ICollection? CurrentlyWatching { get; set; } public User() { } [JsonConstructor] public User(string username) { if (username != null) { Slug = Utility.ToSlug(username); Username = username; } } } }