Ejemplo n.º 1
0
        /// <summary>
        /// 根据 token 获取管理员,如果管理员不存在,会返回管理员空值
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public static Account GetAccount(string token)
        {
            using var db = new YGBContext();

            DB.Tables.Admin account = db.Admins.AsNoTracking()
                                      .FirstOrDefault(a => a.Token.ToString() == token);
            if (account is null)
            {
                return(new Account(Account.EMPTY));
            }
            return(new Account(account.Id));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 登出
        /// </summary>
        public async Task <Resp> Logout()
        {
            using var db = new YGBContext();
            DB.Tables.Admin account = await db.Admins.FirstOrDefaultAsync(a => a.Id == Id);

            if (account is null)
            {
                return(Resp.Success(Resp.NONE));
            }
            account.Token = Guid.NewGuid();
            if (await db.SaveChangesAsync() == 1)
            {
                return(Resp.Success(Resp.NONE));
            }
            return(Resp.Fault(Resp.NONE, "退出登录失败"));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 登录
        /// </summary>
        public static async Task <(bool, Resp)> Login(Models.LoginInfo loginInfo)
        {
            /*
             * 检查登录参数
             */

            (bool isValid, string msg) = loginInfo.IsValid();
            if (!isValid)
            {
                return(false, Resp.Fault(Resp.NONE, msg));
            }

            /*
             * 检查登录账号密码
             */

            using var db = new YGBContext();

            DB.Tables.Admin account = await db.Admins.FirstOrDefaultAsync(a => a.Account == loginInfo.Account && a.Password == loginInfo.Password);

            if (account is null)
            {
                return(false, Resp.Fault(Resp.NONE, "账号不存在或密码错误"));
            }

            account.Token = Guid.NewGuid();
            int suc = await db.SaveChangesAsync();

            if (suc != 1)
            {
                return(false, Resp.Fault(Resp.NONE, "登录失败, 请重试"));
            }

            Results.LoggedInInfo result = new Results.LoggedInInfo
            {
                Id       = account.Id,
                Token    = account.Token,
                UserName = account.Account,
                Email    = account.Email
            };
            return(true, Resp.Success(result));
        }