//******************************************************************************************************
// UserAccount.cs - Gbtc
//
// Copyright © 2016, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may
// not use this file except in compliance with the License. You may obtain a copy of the License at:
//
// http://opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 02/27/2016 - J. Ritchie Carroll
// Generated original version of source code.
//
//******************************************************************************************************
using System;
using System.ComponentModel.DataAnnotations;
using GSF.Data.Model;
namespace GSF.Security.Model
{
///
/// Model for UserAccount table.
///
///
/// A record in this table can represent a database defined user with associated detail
/// or an Active Directory user that maintains its own user details.
///
[PrimaryLabel("Name")]
public class UserAccount
{
///
/// Unique user account ID field.
///
[PrimaryKey(true)]
public Guid ID { get; set; }
///
/// User name field - stores SID for AD authentication.
///
[Label("User Name")]
[Required]
[StringLength(200)]
public string Name { get; set; }
///
/// Password field - stores password hash for DB authentication only.
///
[Required]
[StringLength(200)]
public string Password { get; set; }
///
/// First name field - for DB authentication only.
///
[Label("First Name")]
[StringLength(200)]
public string FirstName { get; set; }
///
/// Last name field - for DB authentication only.
///
[Label("Last Name")]
[StringLength(200)]
public string LastName { get; set; }
///
/// Default Node ID field.
///
[Required]
public Guid DefaultNodeID { get; set; }
///
/// Phone number field - for DB authentication only.
///
[StringLength(200)]
public string Phone { get; set; }
///
/// E-mail field - for DB authentication only.
///
[Label("E-Mail")]
[StringLength(200)]
[RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Invalid e-mail address.")]
public string Email { get; set; }
///
/// Change password on date field - for DB authentication only.
///
public DateTime? ChangePasswordOn
{
get; set;
}
///
/// Use Active Directory authentication field.
///
[Label("Use Active Directory Authentication")]
[InitialValue("true")]
public bool UseADAuthentication { get; set; }
///
/// User locked-out field.
///
[Label("Locked Out")]
public bool LockedOut
{
get; set;
}
///
/// Created on field.
///
public DateTime CreatedOn { get; set; }
///
/// Created by field.
///
public string CreatedBy { get; set; }
///
/// Updated on field.
///
public DateTime UpdatedOn { get; set; }
///
/// Updated by field.
///
public string UpdatedBy { get; set; }
}
}