示例#1
0
        public static UserCloudModel GetClouds(User user, IUserVaultService _uservaultService //IUserCloudService _usercloudService,
                                               , ICloudService _cloudService, IVaultTemplateService _vaultTemplateService, IMFVaultService _vaultService, IMFilesVaultService _mfvaultService, string host, params string[] roleNames)
        {
            var clouds = _cloudService.GetCloudsByUserRoles(roleNames);
            var userId = user.Id;

            var appModel   = new UserCloudModel();
            var userVaults = _uservaultService.GetVaults(userId);

            foreach (var app in clouds)
            {
                var a    = app;
                var appM = new CloudModel {
                    App = a.ToDto()
                };
                if (app.Id == CloudConstants.MyProjects)
                {
                    var templates = new List <VaultTemplate>();
                    foreach (var t in _vaultTemplateService.GetTemplatesByCloud(app.Id))
                    {
                        templates.Add(t);
                        //a.Templates.Add(t);
                    }
                    if (templates.Count > 0)
                    {
                        var appVaults =
                            userVaults.Where(c => templates.Any(d => c.TemplateId > 0 && c.TemplateId == d.Id));
                        appM.Vaults.AddRange(appVaults.Select(c => c.ToDtoWithoutTemplate()));
                    }
                    appM.Url = "/IntegratedManagement/Index";
                }
                //else if (app.Id == CloudConstants.ProjManagements)
                //{
                //    //todo 指定路径

                //}
                appModel.Apps.Add(appM);
            }
            var password   = DBWorldCache.Get(userId.ToString());
            var appVaultsC = _mfvaultService.GetVaultsByCloud(CloudConstants.SubContracts);
            var vv         = new List <MFilesVault>();

            foreach (var v in appVaultsC)
            {
                if (_vaultService.HasUser(user, password, v))
                {
                    vv.Add(v);
                }
            }
            if (vv.Count > 0)
            {
                var cc = _cloudService.GetCloudById(CloudConstants.SubContracts);
                var cM = new CloudModel {
                    App = cc.ToDto()
                };
                cM.Vaults.AddRange(vv.Select(c => c.ToDtoWithoutTemplate()));
                appModel.Apps.Add(cM);
            }
            return(appModel);
        }
示例#2
0
        public async Task <HttpResponseMessage> CloudApp(CloudAppFileModel model)
        {
            var userId   = GetUserId();
            var userName = GetUserName();
            var pwd      = DBWorldCache.Get(userId.ToString());

            if (String.IsNullOrEmpty(pwd))
            {
                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.BadRequest, Content = new StringContent("请从客户端登陆")
                });
            }

            var cloudUrl = System.Configuration.ConfigurationManager.AppSettings["cloudappweb"];

            using (var client = new HttpClient {
                BaseAddress = new Uri(cloudUrl)
            })
            {
                var res = await client.GetStreamAsync("Common/launch.aspx?Domain=" + model.Domain + "&UserName="******"&Password="******"&ApplicationID=" + model.ApplicationID + "&AppName=" +
                                                      model.AppName + "&ProjectName=" + model.ProjectName + "&FilePath=" + model.FilePath);

                return(new HttpResponseMessage {
                    StatusCode = HttpStatusCode.OK, Content = new StreamContent(res)
                });
            }
        }
示例#3
0
 protected string GetPassword()
 {
     if (!User.Identity.IsAuthenticated)
     {
         return(null);
     }
     return(DBWorldCache.Get(User.Identity.GetUserId <long>().ToString()));
 }
示例#4
0
        public UserPrivate UserPrivate()
        {
            var userName = User.Identity.GetUserName();
            var userId   = User.Identity.GetUserId <long>();
            var pass     = DBWorldCache.Get(userId.ToString());

            return(new UserPrivate {
                UserName = userName, Password = pass
            });
        }
示例#5
0
        private IEnumerable <VaultKey> GetCurrentVaultsEx()
        {
            var userId     = AuthUtility.GetUserId(User);
            var userName   = AuthUtility.GetUserName(User);
            var password   = DBWorldCache.Get(userId.ToString());
            var isAdUser   = !String.IsNullOrEmpty(AuthUtility.GetUserDomain(User.Identity));
            var server     = _vaultServer.GetServer();
            var vaultGuids = _workHourService.GetCurrentVaults(userName, password, isAdUser, server);

            return(vaultGuids);
        }
示例#6
0
        public ActionResult ChangePassword(ChangePasswordViewModel model)
        {
            bool hasPassword = true;

            ViewBag.HasLocalPassword = hasPassword;
            ViewBag.ReturnUrl        = Url.Action("ChangePassword");
            if (hasPassword)
            {
                if (ModelState.IsValid)
                {
                    SimpleLog("in post changepassword");
                    SimpleLog("in post changepassword" + model.OldPassword);
                    SimpleLog("in post changepassword" + model.NewPassword);
                    SimpleLog("in post changepassword" + model.ConfirmPassword);
                    var result = true;
                    try
                    {
                        var userid = User.Identity.GetUserName();
                        SimpleLog("in post 11 name=" + userid);
                        var pass = DBWorldCache.Get(User.Identity.GetUserId());
                        SimpleLog("in post 22 pass="******"in post 33" + vs.Ip + vs.Port);
                        // var app = MFServerUtility.ConnectToServer(userid, model.OldPassword, vs.Ip, vs.Port);
                        var app = MFServerUtility.ConnectToServer(vs);
                        SimpleLog("in post 44");
                        app.LoginAccountOperations.UpdateLoginPassword(userid, model.NewPassword);
                        SimpleLog("in post 55");
                    }
                    catch (Exception ex)
                    {
                        SimpleLog(ex.Message);
                        result = false;
                    }

                    if (result)
                    {
                        SimpleLog("in post success");
                        return(RedirectToAction("ChangePassword", new { Message = ManageMessageId.ChangePasswordSuccess }));
                    }
                    else
                    {
                        SimpleLog("in post error");
                        // AddErrors(result);
                        return(RedirectToAction("ChangePassword", new { Message = ManageMessageId.Error }));
                    }
                }
            }


            // If we got this far, something failed, redisplay form
            return(View(model));
        }
示例#7
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            //var isUserId = false; //是否Password是UserId
            var headers      = context.Request.Headers;
            var isDomainUser = true;

            if (headers.ContainsKey(DomainKey))
            {
                var v = headers.GetValues(DomainKey).FirstOrDefault();
                if (v != null)
                {
                    var notDomain = String.Equals(false.ToString(), v, StringComparison.CurrentCultureIgnoreCase);
                    if (notDomain)
                    {
                        isDomainUser = false;
                    }
                }
            }
            else
            {
                var qs = context.Request.Query;
                if (qs != null)
                {
                    var domain = qs.Any(c => c.Key.ToUpper() == "DOMAIN");
                    if (domain)
                    {
                        var v         = qs.FirstOrDefault(c => c.Key.ToUpper() == "DOMAIN").Value.FirstOrDefault();
                        var notDomain = String.Equals(false.ToString(), v, StringComparison.CurrentCultureIgnoreCase);
                        if (notDomain)
                        {
                            isDomainUser = false;
                        }
                    }
                }
            }

            var scope         = context.OwinContext.GetAutofacLifetimeScope();
            var userManager   = scope.Resolve <UserManager <User, long> >();
            var vaultService  = scope.Resolve <IVaultServerService>();
            var mfuserService = scope.Resolve <IMFUserService>();
            var userService   = scope.Resolve <IUserService>();
            var res           = await Task.Run(() => AuthUtility.Login(context.UserName, context.Password, isDomainUser, userManager
                                                                       , vaultService, mfuserService, userService));

            if (!string.IsNullOrEmpty(res.Error))
            {
                context.SetError(res.Error);
                return;
            }
            var user = res.User;

            var oAuthIdentity = await userManager.CreateIdentityAsync(user,
                                                                      OAuthDefaults.AuthenticationType);

            var cookiesIdentity = await userManager.CreateIdentityAsync(user,
                                                                        CookieAuthenticationDefaults.AuthenticationType);

            var data = new Dictionary <string, string>
            {
                { "userName", user.UserName },
                { "disabled", user.Disabled.ToString() },
                { "email", user.Email }
            };

            var properties = CreateProperties(data);
            var ticket     = new AuthenticationTicket(oAuthIdentity, properties);

            context.Validated(ticket);
            context.Request.Context.Authentication.SignIn(cookiesIdentity);
            user.LastIpAddress    = context.Request.RemoteIpAddress;
            user.LastLoginDateUtc = DateTime.UtcNow;
            await userManager.UpdateAsync(user);

            //if (!isUserId)
            //{
            DBWorldCache.Add(user.Id.ToString(), context.Password);
            //}
        }
示例#8
0
        public async Task <ActionResult> LogOn(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // 这不会计入到为执行帐户锁定而统计的登录失败次数中
            // 若要在多次输入错误密码的情况下触发帐户锁定,请更改为 shouldLockout: true

            var userRes = await Task.Run(() => AuthUtility.Login(model.UsernameOrEmail, model.Password, model.IsDomainUser,
                                                                 _userManager, _vaultserverService, _mfuserService, _userService));

            if (userRes.User != null)
            {
                var user = userRes.User;

                await _signInManager.SignInAsync(user, model.RememberMe, false);

                //   Log.InfoFormat("登录账户:{0}, 公司:{1},部门:{2}", user.UserName, user.Company.Name, user.Department.Name);
                DBWorldCache.Add(user.Id.ToString(), model.Password);
                //check whether current user can connect contractor vault.
                try {
                    //分包商菜单处理,使用缓存
                    var thevault = _vaultRepository.Table.FirstOrDefault(c => c.CloudId == 3);
                    var app      = MFServerUtility.ConnetToMfApp(user, model.Password, thevault.Server);
                    var vault    = app.LogInToVault(thevault.Guid);
                    DBWorldCache.Add(user.Id.ToString() + "canManageContractor", "true");
                    //  SimpleLog(user.FullName + "can view contractors,id=" + user.Id);
                }
                catch (Exception) { }
                try
                {
                    var vs     = _vaultserverService.GetServer();
                    var mfapp  = MFServerUtility.ConnectToServer(vs);
                    var vaults = mfapp.GetOnlineVaults();
                    foreach (VaultOnServer vaultOnServer in vaults)
                    {
                        //  SimpleLog(vaultOnServer.Name + "  task check!");
                        Vault vault;
                        try
                        {
                            vault = vaultOnServer.LogIn();
                        }
                        catch (Exception)
                        {
                            SimpleLog(string.Format("Info: vault:{0},{1}", vaultOnServer.Name, "no right"));
                            continue;
                        }
                        try
                        {
                            var havetask = CheckTaskInOneVault(vault, user.Id);
                            if (havetask)
                            {
                                DBWorldCache.Add(user.Id.ToString() + "havetask", havetask.ToString());
                                //  SimpleLog(vault.Name + " havetask !");
                                break;
                            }
                            //  SimpleLog(vault.Name + " have no task !");
                        }
                        catch (Exception ex)
                        {
                            SimpleLog("havetask check error:" + ex.Message);
                        }
                    }
                    foreach (VaultOnServer vaultOnServer in vaults)
                    {
                        //  SimpleLog(vaultOnServer.Name + "  notice check!");
                        Vault vault;
                        try
                        {
                            vault = vaultOnServer.LogIn();
                        }
                        catch (Exception)
                        {
                            SimpleLog(string.Format("Info: vault:{0},{1}", vaultOnServer.Name, "no right"));
                            continue;
                        }
                        try
                        {
                            var havenotice = CheckNoticeInOneVault(vault, user.Id);

                            if (havenotice)
                            {
                                DBWorldCache.Add(user.Id.ToString() + "havenotice", havenotice.ToString());
                                SimpleLog(vault.Name + " havenotice !");
                                break;
                            }
                            //  SimpleLog(vault.Name + " have no notice !");
                        }
                        catch (Exception ex)
                        {
                            SimpleLog("havenotice check error:" + ex.Message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    SimpleLog("check whether current user can connect contractor vault." + ex.Message);
                }
                return(RedirectToLocal(returnUrl));
            }
            else
            {
                ModelState.AddModelError("", userRes.Error);
            }

            return(View(model));
        }