コード例 #1
0
        public async Task <Tuple <bool, UserViewModel> > GetUser(int userId, System.Security.Principal.IPrincipal User)
        {
            var _access = new BLL.Core.Domain.UserAccess(new SharedContext(), User);

            if (_access.getAccessibleUsers().Where(m => m.user_auto == userId).Count() == 0)
            {
                return(Tuple.Create <bool, UserViewModel>(false, null));
            }

            USER_TABLE user = await _context.USER_TABLE.FindAsync(userId);

            if (user == null)
            {
                return(Tuple.Create <bool, UserViewModel>(false, null));
            }

            UserViewModel returnUser = new UserViewModel()
            {
                Email       = user.email,
                Id          = (int)user.user_auto,
                Name        = user.username,
                AccessLevel = (UserAccessTypes)(int)_access.getHighestCategoryAccess()
            };

            return(Tuple.Create(true, returnUser));
        }
コード例 #2
0
ファイル: UserAccess.cs プロジェクト: hari81/BLL
        protected bool Init(System.Security.Principal.IPrincipal CurrentUser)
        {
            if (!CurrentUser.Identity.IsAuthenticated)
            {
                return(false);
            }
            var identity = (ClaimsIdentity)CurrentUser.Identity;

            IEnumerable <Claim> claims          = identity.Claims.Where(m => m.Type == "sub");
            IEnumerable <Claim> nameIdentifiers = identity.Claims.Where(m => m.Type == ClaimTypes.NameIdentifier);

            if (claims.Count() == 0 && nameIdentifiers.Count() == 0)
            {
                return(false);
            }

            if (claims.Count() > 0)
            {
                AspNetId = claims.First().Value;
            }
            else
            {
                AspNetId = nameIdentifiers.First().Value;
            }

            var users = _domainContext.USER_TABLE.Where(m => m.AspNetUserId == AspNetId);

            if (users.Count() == 0)
            {
                return(false);
            }
            UserTable = users.First();
            UserId    = users.First().user_auto.LongNullableToInt();
            return(true);
        }
コード例 #3
0
ファイル: UserAccess.cs プロジェクト: hari81/BLL
        protected bool Init(int CurrentUser)
        {
            if (CurrentUser == 0)
            {
                return(false);
            }
            var user = _domainContext.USER_TABLE.Find(CurrentUser);

            if (user == null)
            {
                return(false);
            }
            UserTable = user;
            UserId    = CurrentUser;
            return(true);
        }
コード例 #4
0
ファイル: Preferences.cs プロジェクト: hari81/BLL
 public Preferences(SharedContext context, long userId)
 {
     _context = context;
     _user    = _context.USER_TABLE.Find(userId);
     _aspUser = _context.AspNetUsers.Find(_user.AspNetUserId);
 }
コード例 #5
0
        public GETResponseMessage createNewUserAccount(string username, string password, string email, int accessLevel, UserAccountType type, int teamId)
        {
            var newUser = new USER_TABLE();

            if (type == UserAccountType.Dealership && (accessLevel != (int)UserAccessTypes.DealershipAdministrator && accessLevel != (int)UserAccessTypes.DealershipUser))
            {
                return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed. The access level you attempted to give is not valid for a dealership. "));
            }
            else if (type == UserAccountType.Customer && (accessLevel != (int)UserAccessTypes.CustomerAdministrator && accessLevel != (int)UserAccessTypes.CustomerUser))
            {
                return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed. The access level you attempted to give is not valid for a customer. "));
            }
            else if (!checkUsernameIsUnique(username))
            {
                return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Username already exists. "));
            }
            else if (!checkEmailIsUnique(email))
            {
                return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Email already exists. "));
            }
            else if (username.Length < 1 || password.Length < 1 || email.Length < 1)
            {
                return(new GETResponseMessage(ResponseTypes.InvalidInputs, "Failed: Invalid username, password, or email length. "));
            }
            else
            {
                // Creating user account
                // GET related fields
                newUser.username      = username;
                newUser.userid        = username;
                newUser.passwd        = password;
                newUser.email         = email;
                newUser.language_auto = 1; // English
                newUser.currency_auto = 1; // AUD
                newUser.active        = true;
                newUser.suspended     = false;

                // Fields not related to GET, but that are currently required.
                newUser.internalemp     = false;
                newUser.internalother   = false;
                newUser.viewe           = false;
                newUser.viewr           = false;
                newUser.interpreter     = false;
                newUser._protected      = false;
                newUser.attach          = false;
                newUser.print_copies    = 0;
                newUser.sos             = false;
                newUser.IsEquipmentEdit = false;

                if (type == UserAccountType.Customer)
                {
                    newUser.customer_auto = teamId;
                }

                using (var context = new SharedContext())
                {
                    context.USER_TABLE.Add(newUser);

                    try
                    {
                        context.SaveChanges();
                    }
                    catch
                    {
                        return(new GETResponseMessage(ResponseTypes.Failed, "Failed: Unable to store user in database. "));
                    }

                    // Creating user access mapping entry
                    var newUserAccessMap = new UserAccessMaps();
                    newUserAccessMap.user_auto = newUser.user_auto;
                    if (type == UserAccountType.Dealership)
                    {
                        newUserAccessMap.DealershipId = teamId;
                    }
                    else
                    {
                        newUserAccessMap.customer_auto = teamId;
                    }
                    newUserAccessMap.AccessLevelTypeId = accessLevel;
                    context.UserAccessMaps.Add(newUserAccessMap);

                    try
                    {
                        context.SaveChanges();
                    }
                    catch
                    {
                        // IF this fails, user account is still created but with no access record. What should we do?
                        // Need to ask Mason.
                        return(new GETResponseMessage(ResponseTypes.Failed, "Failed: Unable to create access map record for the new user. "));
                    }
                }
            }
            // Insert module access records (required for old undercarriage application)
            var moduleAccess1 = new USER_MODULE_ACCESS()
            {
                moduleid  = 0,
                user_auto = newUser.user_auto,
            };
            var moduleAccess2 = new USER_MODULE_ACCESS()
            {
                moduleid  = 1,
                user_auto = newUser.user_auto,
            };
            var moduleAccess3 = new USER_MODULE_ACCESS()
            {
                moduleid  = 3,
                user_auto = newUser.user_auto,
            };

            using (var context = new SharedContext())
            {
                context.USER_MODULE_ACCESS.Add(moduleAccess1);
                context.USER_MODULE_ACCESS.Add(moduleAccess2);
                context.USER_MODULE_ACCESS.Add(moduleAccess3);

                try
                {
                    context.SaveChanges();
                }
                catch
                {
                    return(new GETResponseMessage(ResponseTypes.Failed, "Failed: User was created, but there was an error giving them module access. "));
                }
            }
            return(new GETResponseMessage(ResponseTypes.Success, newUser.user_auto.ToString()));
        }
コード例 #6
0
 public FindInspection(UndercarriageContext undercarriageContext, SharedContext sharedContext, long userId)
 {
     _context       = undercarriageContext;
     _sharedContext = sharedContext;
     _user          = _context.USER_TABLE.Find(userId);
 }
コード例 #7
0
 /// <summary>
 /// Audit logger for the undercarriage interpretation page.
 /// </summary>
 /// <param name="context">The undercarriage database context. </param>
 /// <param name="inspectionId">The inspection Id we are logged changes for. </param>
 /// <param name="userId">The user who is making a change to the data. </param>
 public InterpretationAuditor(UndercarriageContext context, int inspectionId, long userId)
 {
     _context    = context;
     _user       = _context.USER_TABLE.Find(userId);
     _inspection = _context.TRACK_INSPECTION.Find(inspectionId);
 }