You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.1 KiB
108 lines
3.1 KiB
using System;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using System.Globalization;
|
|
|
|
namespace Jellyfin.Data.Entities.Security
|
|
{
|
|
/// <summary>
|
|
/// An entity representing a device.
|
|
/// </summary>
|
|
public class Device
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="Device"/> class.
|
|
/// </summary>
|
|
/// <param name="userId">The user id.</param>
|
|
/// <param name="appName">The app name.</param>
|
|
/// <param name="appVersion">The app version.</param>
|
|
/// <param name="deviceName">The device name.</param>
|
|
/// <param name="deviceId">The device id.</param>
|
|
public Device(Guid userId, string appName, string appVersion, string deviceName, string deviceId)
|
|
{
|
|
UserId = userId;
|
|
AppName = appName;
|
|
AppVersion = appVersion;
|
|
DeviceName = deviceName;
|
|
DeviceId = deviceId;
|
|
|
|
AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
|
|
DateCreated = DateTime.UtcNow;
|
|
DateModified = DateCreated;
|
|
DateLastActivity = DateCreated;
|
|
|
|
// Non-nullable for EF Core, as this is a required relationship.
|
|
User = null!;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the id.
|
|
/// </summary>
|
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
public int Id { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Gets the user id.
|
|
/// </summary>
|
|
public Guid UserId { get; private set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the access token.
|
|
/// </summary>
|
|
public string AccessToken { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the app name.
|
|
/// </summary>
|
|
[MaxLength(64)]
|
|
[StringLength(64)]
|
|
public string AppName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the app version.
|
|
/// </summary>
|
|
[MaxLength(32)]
|
|
[StringLength(32)]
|
|
public string AppVersion { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the device name.
|
|
/// </summary>
|
|
[MaxLength(64)]
|
|
[StringLength(64)]
|
|
public string DeviceName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the device id.
|
|
/// </summary>
|
|
[MaxLength(256)]
|
|
[StringLength(256)]
|
|
public string DeviceId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether this device is active.
|
|
/// </summary>
|
|
public bool IsActive { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the date created.
|
|
/// </summary>
|
|
public DateTime DateCreated { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the date modified.
|
|
/// </summary>
|
|
public DateTime DateModified { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets or sets the date of last activity.
|
|
/// </summary>
|
|
public DateTime DateLastActivity { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gets the user.
|
|
/// </summary>
|
|
public User User { get; private set; }
|
|
}
|
|
}
|