コード例 #1
0
        public Result Update(AdministratorEntity entity)
        {
            var con    = new DapperConnectionManager();
            var query  = new QueryEntity();
            var result = new Result();

            if (!string.IsNullOrEmpty(entity.Password))
            {
                if (entity.Password.Length < 6)
                {
                    result         = new Result(false);
                    result.Message = "Password length invalid";
                    return(result);
                }
                var credentials = new CredentialsManager();
                var hash        = credentials.GenerateSalt();
                entity.Password = credentials.EncodePassword(entity.Password, hash);
                entity.Hash     = hash;
                query.Query     = @"UPDATE Administrators set Name = @Name, Password = @Password, Hash = @Hash where AdministratorId = @AdministratorId";
            }
            else
            {
                query.Query = @"UPDATE Administrators set Name = @Name where AdministratorId = @AdministratorId";
            }

            query.Entity   = entity;
            result         = con.ExecuteQuery(query);
            result.Message = result.Success ? "The Adminsitrator has been updated" : "An error occurred";
            result.Entity  = entity.AdministratorId;
            return(result);
        }
コード例 #2
0
        public string GenerateAdminToken(AdministratorEntity admin)
        {
            var utc0      = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            var issueTime = DateTime.Now;

            var iat = (int)issueTime.Subtract(utc0).TotalSeconds;
            var exp = (int)issueTime.AddDays(30).Subtract(utc0).TotalSeconds; // Expiration time is up to 1 hour, but lets play on safe side

            IJwtAlgorithm     algorithm  = new HMACSHA256Algorithm();
            IJsonSerializer   serializer = new JsonNetSerializer();
            IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
            IJwtEncoder       encoder    = new JwtEncoder(algorithm, serializer, urlEncoder);

            var payload = new Dictionary <string, object>
            {
                { "AdministratorId", admin.AdministratorId },
                { "Username", admin.Username },
                { "exp", exp },
                { "iat", iat },
                { "roles", @"[admin, generic]" }
            };

            var token = encoder.Encode(payload, SecretAdminKey);

            return(token);
        }
コード例 #3
0
        public Result Insert(AdministratorEntity entity, bool seal = false)
        {
            var result = new Result();

            if (entity.Password.Length < 6)
            {
                result         = new Result(false);
                result.Message = "Password length invalid";
                return(result);
            }

            var con   = new DapperConnectionManager();
            var query = new QueryEntity();

            var credentials = new CredentialsManager();

            var hash = credentials.GenerateSalt();

            entity.Password = credentials.EncodePassword(entity.Password, hash);
            entity.Hash     = hash;
            entity.Username = entity.Username.Trim().ToLower();
            entity.Sealed   = seal;

            query.Entity = entity;
            query.Query  = @"INSERT INTO Administrators (Username, Password, Hash, Sealed, Name) VALUES(@Username, @Password, @Hash, @Sealed, @Name)";

            result         = con.InsertQuery(query);
            result.Message = result.Success ? "The administrator has been created" : "An error occurred";
            result.Entity  = entity;
            return(result);
        }
コード例 #4
0
        public ActionResult LogIn(LoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Index"));
            }
            var administratorEntity = new AdministratorEntity()
            {
                Password = model.Password,
                Username = model.Username
            };
            var result = _administratorsManager.LogIn(administratorEntity);

            if (!result.Success)
            {
                TempData["Result"] = result;
                return(RedirectToAction("Index"));
            }
            Session["AdminUser"] = result.Entity;
            if (model.Remember)
            {
                HttpCookie          cookie = new HttpCookie("MNFCMS");
                DateTime            now    = DateTime.Now;
                AdministratorEntity usr    = (AdministratorEntity)result.Entity;
                cookie.Value   = usr.Token;
                cookie.Expires = now.AddDays(30);
                Response.Cookies.Add(cookie);
            }
            return(RedirectToAction("Index", "Home"));
        }
コード例 #5
0
 public static AdministratorMD ToMetaData(AdministratorEntity entity)
 {
     return(new AdministratorMD
     {
         Id = entity.Id,
         Account = entity.Account,
         Password = entity.Password,
         Identity = entity.Identity,
         Name = entity.Name,
         Birthday = entity.Birthday,
         Phone = entity.Phone,
         Address = entity.Address,
         Status = entity.Status,
         StatusOptions = GetOptions()
     });
 }
コード例 #6
0
        public Result LogIn(AdministratorEntity entity)
        {
            var con         = new DapperConnectionManager();
            var query       = new QueryEntity();
            var credentials = new CredentialsManager();

            entity.Username = entity.Username.Trim().ToLower();
            query.Query     = @"SELECT * FROM Administrators
                            where Username = @Username";
            query.Entity    = entity;
            var result = con.ExecuteQuery <AdministratorEntity>(query);

            if (!result.Success)
            {
                result.Message = "Login error";
                return(result);
            }

            var r = (IEnumerable <AdministratorEntity>)result.Entity;

            var admin = r.FirstOrDefault();

            if (admin == null)
            {
                result.Message = "User not found";
                result.Success = false;
                return(result);
            }
            var password = credentials.EncodePassword(entity.Password, admin.Hash);

            if (password == admin.Password)
            {
                admin.Hash     = null;
                admin.Password = null;
                admin.Token    = credentials.GenerateAdminToken(admin);
                result.Entity  = admin;
                return(result);
            }

            result.Message = "Incorrect password";
            result.Success = false;
            return(result);
        }
コード例 #7
0
 public Result Insert(AdministratorEntity entity)
 {
     return(Insert(entity, false));
 }