bremen_short_url/App_Code/authPermission.cs

132 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Runtime.Serialization.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Web.Services.Protocols;
using System.Security.Cryptography;
using System.Text;
using System.Web.SessionState;
using System.Data;
/// <summary>
/// authPermission 的摘要描述
/// </summary>
public class authPermission
{
public string user_uid = "";
public string user_id = "";
public string user_name = "";
public string user_email = "";
public string user_type = "";
public string user_perm = "";
public string user_pic = "";
public Boolean _isLogin = false;
public authPermission()
{
//
// TODO: 在這裡新增建構函式邏輯
//
string delExpiredDataStr = "delete token where token_expireddate <= '" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "'";
autoExecSQL delExpiredData = new autoExecSQL(delExpiredDataStr);
HttpCookie tokenCookie = (HttpContext.Current.Request.Cookies["token"] == null) ? null : HttpContext.Current.Request.Cookies["token"];
HttpCookie idCookie = (HttpContext.Current.Request.Cookies["id"] == null) ? null : HttpContext.Current.Request.Cookies["id"];
if (tokenCookie==null)
{
_isLogin = false;
return;
}
string token = tokenCookie["token"];
string id = tokenCookie["uid"];
string tokenStr = string.Format("select * from token where token_key = '{0}' and user_uid = '{1}'", token, id);
autoBindDataTable tokenObj = new autoBindDataTable(tokenStr);
if (tokenObj.dataRows.Count == 0)
{
tokenCookie.Expires = DateTime.Now.AddDays(-10);
HttpContext.Current.Response.Cookies.Add(tokenCookie);
_isLogin = false;
return;
}
if (tokenObj.dataRows[0]["token_isremember"].ToString() == "Y")
{
idCookie.Expires = DateTime.Now.AddDays(31);
tokenCookie.Expires = DateTime.Now.AddDays(10);
tokenObj.dataRows[0]["token_expireddate"] = DateTime.Now.AddDays(10);
HttpContext.Current.Response.Cookies.Add(tokenCookie);
HttpContext.Current.Response.Cookies.Add(idCookie);
}
else
{
tokenObj.dataRows[0]["token_expireddate"] = DateTime.Now.AddMinutes(60);
}
string userStr = string.Format("select * from users where user_uid = '{0}' and user_onjob = 'Y'", id);
autoBindDataTable userObj = new autoBindDataTable(userStr);
if (userObj.dataRows.Count == 0)
{
_isLogin = false;
return;
}
if (userObj.dataRows[0]["user_type"].ToString() == "N") {
string elabStr = string.Format("select * from new_userdata where userid = '{0}' and onjob = 0", userObj.dataRows[0]["user_id"].ToString());
autoBindElab elabObj = new autoBindElab(elabStr);
if (elabObj.dataRows.Count == 0)
{
userObj.dataRows[0]["user_onjob"] = "N";
userObj.updateDataTable();
_isLogin = false;
return;
}
}
user_uid = id;
user_id = userObj.dataRows[0]["user_id"].ToString();
user_name = userObj.dataRows[0]["user_name"].ToString();
user_email = userObj.dataRows[0]["user_email"].ToString();
user_type = userObj.dataRows[0]["user_type"].ToString();
user_perm = userObj.dataRows[0]["user_perm"].ToString();
user_pic = userObj.dataRows[0]["user_pic"].ToString();
userObj.dataRows[0]["user_lastlogindate"] = DateTime.Now;
try
{
userObj.updateDataTable();
tokenObj.updateDataTable();
}
catch (Exception ex)
{
}
_isLogin = true;
}
public Boolean isLogin()
{
return _isLogin;
}
}