aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.UsersAndRoles/Providers/Place.cs
blob: a2ac2a9b70540f08c45b3096ca79373de8988403 (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
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace Tango.MachineStudio.UsersAndRoles.Providers
{
    public class Place
    {
        [XmlElement("address")]
        [JsonProperty("address")]
        public PlaceAddress Address { get; set; }

        [XmlAttribute("display_name")]
        [JsonProperty("display_name")]
        public String DisplayName { get; set; }

        public Place()
        {
            Address = new PlaceAddress();
        }

        public override string ToString()
        {
            return DisplayName;
        }
    }
}
span class="p">; using Tango.BL.Enumerations; using SimpleValidator.Extensions; using Newtonsoft.Json; using System.Xml.Serialization; using Tango.Core.Cryptography; namespace Tango.BL.Entities { public partial class User : UserBase { private static IHashGenerator _hashGenerator; private bool _passwordGatewayModified = false; /// <summary> /// Determines whether the user has the specified permission. /// </summary> /// <param name="permission">The permission.</param> /// <returns> /// <c>true</c> if the user has permission; otherwise, <c>false</c>. /// </returns> public bool HasPermission(Permissions permission) { return UsersRoles.Select(x => x.Role).ToList().SelectMany(x => x.RolesPermissions).ToList().Exists(x => x.Permission.Code == permission.ToInt32()); } /// <summary> /// Determines whether the user has role. /// </summary> /// <param name="role">The role.</param> public bool HasRole(Roles role) { return UsersRoles.ToList().Exists(x => x.Role.Code == role.ToInt32()); } /// <summary> /// Gets the aggregated user roles as enumerations. /// </summary> [NotMapped] public List<Role> Roles { get { return UsersRoles.Select(x => x.Role).ToList(); } } /// <summary> /// Gets the aggregated user permissions as enumerations. /// </summary> [NotMapped] public List<Permission> Permissions { get { return UsersRoles.Select(x => x.Role).ToList().SelectMany(x => x.RolesPermissions).Select(x => x.Permission).ToList(); } } private String _passwordGateway; /// <summary> /// Gets or sets the password gate way. /// </summary> [NotMapped] [JsonIgnore] [XmlIgnore] public String PasswordGateWay { get { return _passwordGateway; } set { _passwordGateway = value; Password = GetHashGenerator().Encrypt(_passwordGateway); RaisePropertyChangedAuto(); _passwordGatewayModified = true; } } protected override void RaisePropertyChanged(string propName) { base.RaisePropertyChanged(propName); if (propName == nameof(Password)) { RaisePropertyChanged(nameof(PasswordGateWay)); } } public override bool Validate(ObservablesContext context) { return base.Validate(context) && Contact.Validate(context) && Address.Validate(context); } protected override void OnValidating(ObservablesContext context) { base.OnValidating(context); var users = context.Users.ToList(); if (users.Exists(x => x.Guid != Guid && x.Email.ToLower() == Email.ToLower())) { InsertError(nameof(Email), "The specified email is already taken by another account."); } if (!Email.IsEmail()) { InsertError(nameof(Email), "The specified email address is invalid."); } if (_passwordGatewayModified) { if (!PasswordGateWay.IsBetweenLength(4, 30)) { InsertError(nameof(PasswordGateWay), "A user password must be at least 4 characters long and maximum 30."); } } } /// <summary> /// Gets the specified password hash. /// </summary> /// <param name="password">The password.</param> /// <returns></returns> public static String GetPasswordHash(String password) { return GetHashGenerator().Encrypt(password); } private static IHashGenerator GetHashGenerator() { if (_hashGenerator == null) { _hashGenerator = new BasicHashGenerator(); } return _hashGenerator; } /// <summary> /// Initializes a new instance of the <see cref="User" /> class. /// </summary> public User() : base() { } } }