75 lines
3.3 KiB
C#
75 lines
3.3 KiB
C#
|
using Qcarbon.Database.adminCheck;
|
|||
|
using Qcarbon.Interfaces.adminCheck;
|
|||
|
using Qcarbon.ViewModels.admin;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Security.Claims;
|
|||
|
using System.Security.Principal;
|
|||
|
using System.Web;
|
|||
|
using System.Web.Configuration;
|
|||
|
using Weee.DAL;
|
|||
|
using Weee.Service;
|
|||
|
|
|||
|
namespace Weee.Models.ExtensionMethods
|
|||
|
{
|
|||
|
public static class IdentityExtensions
|
|||
|
{
|
|||
|
public static bool IsCompanyAdmin(this IIdentity identity, WeeeDataContext _db)
|
|||
|
{
|
|||
|
bool ret=false;
|
|||
|
var userName = ((ClaimsIdentity)identity).Name;
|
|||
|
var qry = (from u in _db.Users
|
|||
|
where u.UserName == userName
|
|||
|
select u.IsCompanyAdmin).FirstOrDefault();
|
|||
|
if (qry != null)
|
|||
|
ret = qry;
|
|||
|
return ret;
|
|||
|
}
|
|||
|
public static ACCOUNT_TYPE GetUserAccountType(this IIdentity identity, WeeeDataContext _db)
|
|||
|
{
|
|||
|
var userName = ((ClaimsIdentity)identity).Name;
|
|||
|
var userTypeInfo0 = (from u in _db.Users
|
|||
|
join ut in _db.UserAccountType on u.Id equals ut.UserId
|
|||
|
into UserT from utt in UserT.DefaultIfEmpty()
|
|||
|
where u.UserName.Trim().ToLower() ==
|
|||
|
(userName != null && userName.Trim() != "" ?
|
|||
|
userName.Trim().ToLower() : "")
|
|||
|
&& utt.Enabled == true
|
|||
|
select utt).AsQueryable();// .FirstOrDefault();
|
|||
|
var userTypeInfo = userTypeInfo0.FirstOrDefault();
|
|||
|
ACCOUNT_TYPE ret = userTypeInfo != null ?
|
|||
|
userTypeInfo.AccountType : ACCOUNT_TYPE.UNDEFINED; // 1: 僅組織型, 2: 完整功能
|
|||
|
if (userTypeInfo == null)
|
|||
|
return ret;
|
|||
|
var qry = (from a in _db.Users
|
|||
|
where a.UserName.ToLower() == userName.ToLower()
|
|||
|
select a).FirstOrDefault();
|
|||
|
if (qry != null)
|
|||
|
{
|
|||
|
IcompanyAdminCheckService _companyAdminCheckService =
|
|||
|
new companyAdminCheckService(_db, userTypeInfo.UserId);
|
|||
|
IadminCheckService _adminCheckService = new adminCheckService(_db
|
|||
|
, userTypeInfo.UserId);
|
|||
|
if (!_adminCheckService.adminCheckPass())
|
|||
|
{
|
|||
|
int companyId = _companyAdminCheckService.userId2companyID(userTypeInfo.UserId);
|
|||
|
companyAdminAccessVM uaa = _companyAdminCheckService.getCompanyAdminAccessVM(companyId);
|
|||
|
if (uaa != null)
|
|||
|
ret = uaa.AccountType;
|
|||
|
}
|
|||
|
}
|
|||
|
//string OrganizationOnly = WebConfigurationManager.AppSettings["OrganizationOnly"]; // true or else
|
|||
|
//bool isOrganizationOnly;
|
|||
|
//if (!bool.TryParse(OrganizationOnly, out isOrganizationOnly))
|
|||
|
// isOrganizationOnly = false;
|
|||
|
//int ret;
|
|||
|
//if (isOrganizationOnly)
|
|||
|
// ret = 1;
|
|||
|
//else
|
|||
|
// ret = userTypeInfo != null ? userTypeInfo.AccountType : 0; // 1: 僅組織型, 2: 完整功能
|
|||
|
//return ret;
|
|||
|
return ret;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|