Ejemplo n.º 1
0
 public static bool Create(Models.Users.UserTokenInfo tokenInfo)
 {
     using (var db = new DataAccess.CaraxEntitiy())
     {
         db.UserTokenInfos.Add(tokenInfo);
         return(db.SaveChanges() > 0);
     }
 }
Ejemplo n.º 2
0
 public static bool Update(Guid tokenGuid, DateTime tokenEndDateTime)
 {
     using (var db = new DataAccess.CaraxEntitiy())
     {
         var userTokenInfo = db.UserTokenInfos?.FirstOrDefault(q => q.TokenGuid == tokenGuid);
         if (userTokenInfo == null)
         {
             return(false);
         }
         userTokenInfo.TokenEndDateTime = tokenEndDateTime;
         return(db.SaveChanges() > 0);
     }
 }
Ejemplo n.º 3
0
        public static async Task <bool> Delete(Guid tokens)
        {
            using (var db = new DataAccess.CaraxEntitiy())
            {
                var tokeninfo = db.UserTokenInfos.FirstOrDefault(q => q.TokenGuid == tokens);

                db.UserTokenInfos.Remove(tokeninfo);
                db.SaveChanges();

                var token = db.Tokens.First(q => q.TokenGuid == tokens);
                db.Tokens.Remove(token);

                return(await db.SaveChangesAsync() > 0);
            }
        }
Ejemplo n.º 4
0
        private static List <Models.Users.TokenResult> GetUserTokenGuid(string username, string password, string departmentCode)
        {
            using (var db = new DataAccess.CaraxEntitiy())
            {
                var userDepartments = db.UserDepartments.Where(q => q.Username == username && q.DepartmentCode == departmentCode).ToList();

                if (!userDepartments.Any())
                {
                    throw new AuthenticationException();
                }

                var userId = userDepartments.First().UserId;

                var user = db.Users.FirstOrDefault(q => q.Id == userId);

                if (!user.IsActive)
                {
                    throw new AuthenticationException("This user is not active.");
                }
                // checkpassword
                if (!password.GetSHA512(user.PasswordSalt).SequenceEqual(user.PasswordHash))
                {
                    throw new AuthenticationException();
                }

                var departments = db.Departments.ToList();

                var tokens = new List <TokenResult>();

                var dbTokens = UserTokenInfoLogic.GetTokens(userId, username);

                var dateTime = DateTime.Now;

                foreach (var info in dbTokens)
                {
                    info.TokenEndDateTime = dateTime.AddDays(7);
                    Tokens.AddOrUpdate(info.TokenGuid, info);
                    var departmentFirst = departments.FirstOrDefault(x => x.Code == info.DepartmentCode);
                    tokens.Add(new TokenResult {
                        DepartmentCode = info.DepartmentCode, DepartmentName = departmentFirst?.Name, Token = info.TokenGuid
                    });
                }

                Task.Factory.StartNew(() =>
                {
                    foreach (var info in dbTokens)
                    {
                        UserTokenInfoLogic.Update(info.TokenGuid, info.TokenEndDateTime);
                    }
                });

                var userDepartmentWithByUser = UserDepartmentLogic.GetListByUser(userId);
                if (userDepartmentWithByUser.Count > dbTokens.Count)
                {
                    foreach (var department in userDepartmentWithByUser.Where(x => dbTokens.All(y => y.DepartmentCode != x.DepartmentCode)))
                    {
                        var departmentFirst = departments.FirstOrDefault(x => x.Code == department.DepartmentCode);

                        // set token
                        var tokenGuid = Guid.NewGuid();
                        var tokenInfo = new Models.Users.UserTokenInfo(tokenGuid, user.Id, user.Username, department.DepartmentCode, user.UserLevel, user.EMail, dateTime, dateTime.AddDays(7), user.CompanyCode);

                        // add to db
                        UserTokenInfoLogic.Create(tokenInfo);
                        Models.Tokens.Token tk = new Token
                        {
                            CompanyCode      = tokenInfo.CompanyCode,
                            CreateDateTime   = tokenInfo.CreatedDateTime,
                            DepartmentCode   = tokenInfo.DepartmentCode,
                            TokenEndDateTime = tokenInfo.TokenEndDateTime,
                            TokenGuid        = tokenInfo.TokenGuid,
                            UserId           = tokenInfo.UserId,
                            Username         = tokenInfo.Username
                        };
                        db.Tokens.Add(tk);
                        db.SaveChanges();

                        // add yo dictionary
                        Tokens.AddOrUpdate(tokenGuid, tokenInfo);

                        tokens.Add(new TokenResult {
                            DepartmentCode = department.DepartmentCode, DepartmentName = departmentFirst?.Name, Token = tokenGuid
                        });
                    }
                }

                return(tokens);
            }
        }