|
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Objects.DataClasses;
using System.Linq;
using System.ServiceModel.DomainServices.Server;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server.ApplicationServices;
using System.Runtime.Serialization;
namespace IssueVision.Data.Web
{
/// <summary>
/// LoginUser class derives from User class and implements IUser interface,
/// it only exposes the following three data members to the client:
/// Name, Password, ProfileResetFlag, and Roles
/// </summary>
[DataContractAttribute(IsReference = true)]
[MetadataTypeAttribute(typeof(LoginUser.LoginUserMetadata))]
public sealed class LoginUser : User, IUser
{
// This class allows you to attach custom attributes to properties
// of the LoginUser class.
//
// For example, the following marks the Xyz property as a
// required field and specifies the format for valid values:
// [Required]
// [RegularExpression("[A-Z][A-Za-z0-9]*")]
// [StringLength(32)]
// public string Xyz;
internal sealed class LoginUserMetadata : UserMetadata
{
// Metadata classes are not meant to be instantiated.
private LoginUserMetadata()
{
}
[Key]
[Display(Name = "UserNameLabel", ResourceType = typeof(IssueVisionResources))]
[Required(ErrorMessageResourceName = "ValidationErrorRequiredField", ErrorMessageResourceType = typeof(ErrorResources))]
[RegularExpression("^[a-zA-Z0-9_]*$", ErrorMessageResourceName = "ValidationErrorInvalidUserName", ErrorMessageResourceType = typeof(ErrorResources))]
public new string Name { get; set; }
[Exclude]
public new string Email { get; set; }
[Exclude]
public string FirstName { get; set; }
[Exclude]
public string LastName { get; set; }
[Exclude]
public string NewPassword { get; set; }
[Exclude]
public string PasswordQuestion { get; set; }
[Exclude]
public string PasswordAnswer { get; set; }
[Exclude]
public string UserType { get; set; }
[Exclude]
public bool IsUserMaintenance { get; set; }
}
[DataMember]
public IEnumerable<string> Roles
{
get
{
if (this.UserType == "A")
{
// Admin User
return new List<string> {
IssueVisionServiceConstant.UserTypeUser,
IssueVisionServiceConstant.UserTypeAdmin };
}
else if (this.UserType == "U")
{
// Normal User
return new List<string> { "User" };
}
else
return new List<string>();
}
set
{
if (value.Contains(IssueVisionServiceConstant.UserTypeAdmin))
{
// Admin User
this.UserType = "A";
}
else if (value.Contains(IssueVisionServiceConstant.UserTypeUser))
{
// Normal User
this.UserType = "U";
}
else
this.UserType = String.Empty;
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Weidong has been an information system professional since 1990. He has a Master's degree in Computer Science, and is currently a MCSD .NET