public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context_)
        {
            context_.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            var user = await _repository.FindUser(context_.UserName, context_.Password);

            if (user == null)
            {
                context_.SetError("invalid_grant", "O usuario ou senha estao incorretos");
                return;
            }

            var identity = await _repository.CreateIdentityAsync(user, context_.Options.AuthenticationType);

            identity.AddClaims(ExtendedClaimsProvider.GetClaims(user));

            var ticket = new AuthenticationTicket(identity, AuthUtil.GetProperties(user, identity.Claims));

            context_.Validated(ticket);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部用户
        /// </summary>
        public TableData Load(QueryUserListReq request)
        {
            var loginUser = AuthUtil.GetCurrentUser();
            // 节点层次ID,如 【集团总部】为【.0.1.】
            // 【研发部】为【.0.1.3.】,子节点【研发小组】为【.0.1.3.1.】
            string cascadeId = ".0.";

            if (!string.IsNullOrEmpty(request.orgId))
            {
                var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId);
                cascadeId = org.CascadeId;
            }
            // 用户所属部门ID数组
            var ids = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray();
            // 与此用户同部门的所有用户的ID
            var userIds = ReleManagerApp.Get(Define.USERORG, false, ids);

            var users = UnitWork.Find <User>(u => userIds.Contains(u.Id))
                        .OrderBy(u => u.Name)
                        .Skip((request.page - 1) * request.limit)
                        .Take(request.limit);
            // Repository 为父类【BaseApp<User>】中的属性
            var records = Repository.GetCount(u => userIds.Contains(u.Id));



            var userviews = new List <UserView>();

            foreach (var user in users.ToList())
            {
                UserView uv   = user;
                var      orgs = LoadByUser(user.Id);
                uv.Organizations   = string.Join(",", orgs.Select(u => u.Name).ToList());
                uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
                userviews.Add(uv);
            }

            return(new TableData
            {
                count = records,
                data = userviews,
            });
        }
Ejemplo n.º 3
0
        public Dictionary <string, List <Requisition> > GetAllPendingOrdersOfDepartment()
        {
            Dictionary <string, List <Requisition> > reqOrderDict = new Dictionary <string, List <Requisition> >();

            Employee user = AuthUtil.GetCurrentLoggedUser();

            if (user == null)
            {
                reqOrderDict.Add("reqList", new List <Requisition>());
            }
            else
            {
                List <Requisition> requisitions = RequisitionDAO.GetAllPendingOrderReqs((int)user.DeptId);

                reqOrderDict.Add("reqList", requisitions);
            }

            return(reqOrderDict);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 用户自助注册
 /// </summary>
 public ActionResult Login4Registration()
 {
     try
     {
         var result = AuthUtil.Login(_appKey, "guest", "123456");
         if (result.Success)
         {
             return(Redirect("/Login/UserRegister?Token=" + result.Token));
         }
         else
         {
             return(RedirectToAction("Index", "Login"));
         }
     }
     catch (Exception e)
     {
         return(RedirectToAction("Index", "Login"));
     }
 }
Ejemplo n.º 5
0
        protected string actionName;       //当前Action小写名称

        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            if (!AuthUtil.CheckLogin())
            {
                return;
            }

            controllerName = Request.RequestContext.RouteData.Values["controller"].ToString().ToLower(); //获取当前控制器名称
            actionName     = filterContext.ActionDescriptor.ActionName.ToLower();                        //获取action名称

            var function = this.GetType().GetMethods().FirstOrDefault(u => u.Name.ToLower() == actionName);

            if (function == null)
            {
                throw new Exception("未能找到Action");
            }

            //权限验证标识
            var authorize = function.GetCustomAttribute(typeof(AuthenticateAttribute));

            if (authorize == null)
            {
                return;
            }

            var currentModule = AuthUtil.GetCurrentUser().Modules.FirstOrDefault(u => u.Url.ToLower().Contains(controllerName));

            //当前登录用户没有Action记录&&Action有authenticate标识
            if (currentModule == null)
            {
                filterContext.Result = new RedirectResult("/Login/Index");
                return;
            }

            var version = ConfigurationManager.AppSettings["version"];

            if (version == "demo" && Request.HttpMethod == "POST")
            {
                throw new HttpException(400, "演示版本,不能进行该操作,当前模块:" + controllerName + "/" + actionName);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 /// 开发者登陆
 /// </summary>
 public ActionResult LoginByDev()
 {
     try
     {
         var result = AuthUtil.Login(_appKey, "System", "123456");
         if (result.Success)
         {
             return(Redirect("/home/index?Token=" + result.Token));
         }
         else
         {
             return(RedirectToAction("Index", "Login"));
         }
     }
     catch (Exception e)
     {
         return(RedirectToAction("Index", "Login"));
     }
 }
Ejemplo n.º 7
0
 /// <summary>
 /// 开发者登陆
 /// </summary>
 public ActionResult LoginByDev()
 {
     try
     {
         var token = AuthUtil.Login("670b14728ad9902aecba32e22fa4f6bd", "System", "123456");
         if (!string.IsNullOrEmpty(token))
         {
             return(Redirect("/home/index?Token=" + token));
         }
         else
         {
             return(RedirectToAction("Index", "Login"));
         }
     }
     catch (Exception e)
     {
         return(RedirectToAction("Index", "Login"));
     }
 }
Ejemplo n.º 8
0
        public ActionResult MyOrders()
        {
            string result = "";

            if (CurrentModule != null)
            {
                User usr = AuthUtil.GetCurrentUser().User;
                if (usr != null)
                {
                    string tmp = _app.GetCustID_NameByUserAcct(usr.Account);
                    if (tmp != "")
                    {
                        result = tmp.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries)[0];
                    }
                }

                ViewData["CustomerID"] = result;
            }
            return(View());
        }
Ejemplo n.º 9
0
        public ActionResult Index(string username, string password)
        {
            var result = AuthUtil.Login(_appKey, username, password);

            if (result.Code == 200)
            {
                var cookie = new HttpCookie("Token", result.Token)
                {
                    Expires = DateTime.Now.AddDays(10)
                };
                Response.Cookies.Add(cookie);
                return(Redirect("/home/index"));
                ///拿掉地址栏Token,因为特别不安全。
                ///小王,xxx系统的地址是多少。。。然后账号就
            }
            else
            {
                return(View(result));
            }
        }
Ejemplo n.º 10
0
        public Dictionary <string, object> GetDelegateInfoOfDepartment()
        {
            Dictionary <string, object> resDict = new Dictionary <string, object>();

            Employee user = AuthUtil.GetCurrentLoggedUser();

            if (user == null)
            {
                resDict.Add("auth", false);
                return(resDict);
            }

            resDict.Add("auth", true);
            Models.Delegate del = DelegateDAO.GetDelegateInfoByDeptId((int)user.DeptId);

            resDict.Add("delegated", (del != null));
            resDict.Add("userInfo", del);

            return(resDict);
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome to the Password Manager!!! Version: 1.0");

            try
            {
                if (!context.Auths.Any())
                {
                    Console.WriteLine("Please, create a new auth account");
                    AuthUtil.CreateAuth(authController);
                }
                //var context = new DataContext();
                Menu();
            }
            catch (Exception exception)
            {
                Console.WriteLine($"An error has ocurred: {exception.Message}");
                Menu();
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部角色
        /// </summary>
        public TableData Load(QueryRoleListReq request)
        {
            var loginUser = AuthUtil.GetCurrentUser();

            string cascadeId = ".0.";

            if (!string.IsNullOrEmpty(request.orgId))
            {
                var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId);
                cascadeId = org.CascadeId;
            }

            var ids     = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray();
            var roleIds = ReleManagerApp.Get(Define.ROLEORG, false, ids);

            var roles = UnitWork.Find <Role>(u => roleIds.Contains(u.Id))
                        .OrderBy(u => u.Name)
                        .Skip((request.page - 1) * request.limit)
                        .Take(request.limit);

            var records = Repository.GetCount(u => roleIds.Contains(u.Id));


            var roleViews = new List <RoleView>();

            foreach (var role in roles)
            {
                RoleView uv   = role;
                var      orgs = LoadByRole(role.Id);
                uv.Organizations   = string.Join(",", orgs.Select(u => u.Name).ToList());
                uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
                roleViews.Add(uv);
            }

            return(new TableData
            {
                count = records,
                data = roleViews,
            });
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 加载当前登录用户可访问的一个部门及子部门全部用户
        /// </summary>
        public TableData Load(QueryUserListReq request)
        {
            var loginUser = AuthUtil.GetCurrentUser();

            string cascadeId = ".0.";

            if (request.orgId > 0)
            {
                var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId);
                cascadeId = org.CascadeId;
            }

            var ids     = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray();
            var userIds = ReleManagerApp.Get(Define.USERORG, false, ids);

            var users = UnitWork.Find <Sys_User>(u => userIds.Contains(u.Id))
                        .OrderBy(u => u.Name)
                        .Skip((request.page - 1) * request.limit)
                        .Take(request.limit);

            var records = Repository.GetCount(u => userIds.Contains(u.Id));


            var userviews = new List <UserView>();

            foreach (var user in users.ToList())
            {
                UserView uv   = user;
                var      orgs = LoadByUser(user.Id);
                uv.Organizations   = string.Join(",", orgs.Select(u => u.Name).ToList());
                uv.OrganizationIds = string.Join(",", orgs.Select(u => u.Id).ToList());
                userviews.Add(uv);
            }

            return(new TableData
            {
                count = records,
                data = userviews,
            });
        }
Ejemplo n.º 14
0
        private void DoTenant(Tenant tenant, BaseNode tenantNode, BaseNode rootNode)
        {
            try
            {
                var context   = tenant.Context as ClientContext;
                var siteProps = tenant.GetSiteProperties(0, true);
                context.Load(siteProps);
                context.ExecuteQuery();

                foreach (var site in siteProps)
                {
                    var websContext = AuthUtil.GetContext(this.AuthenticationType, site.Url, this.Username, this.Password);
                    // Leaving this commented out for now, slows the load down massively
                    //websContext.Web.EnsureProperties(w => w.Title, w => w.Url);

                    // By using a Scoped Web, we can let the iteration continue as normal and rendering can be quick
                    // Because otherwise we need to use Tenant.GetSiteByUrl() and request that each time
                    // Which makes rendering the contents of the tenant VERY slow.

                    BaseNode webNode = new ScopedWebNode(websContext);
                    webNode.Title         = site.Title;
                    webNode.Url           = site.Url;
                    webNode.ParentNode    = tenantNode;
                    webNode.RootNode      = rootNode;
                    webNode.NodeConnector = this;

                    if (string.IsNullOrWhiteSpace(webNode.Title))
                    {
                        webNode.Title = webNode.Url;
                    }

                    tenantNode.Children.Add(webNode);
                }
            }
            catch (Exception ex)
            {
                SPCoderLogging.Logger.Error($"Failed to fetch site: {ex.Message}");
            }
        }
Ejemplo n.º 15
0
        public string GetSpecToken(string uid)
        {
            var response = new Response();

            try
            {
                var ouser = ouserManage.Repository.Find(t => t.O_UserID.Equals(uid)).FirstOrDefault();
                if (ouser == null)
                {
                    response.Code    = 500;
                    response.Message = "钉钉用户不存在";
                    return(Infrastructure.Json.ToJson(response));
                }
                var user = userManage.Get(ouser.UserID);

                var result = AuthUtil.Login(_appKey, user.Name, user.Password);
                if (result.Code == 200)
                {
                    var cookie = new HttpCookie("Token", result.Token)
                    {
                        Expires = DateTime.Now.AddDays(10)
                    };
                    Response.Cookies.Add(cookie);
                }
                else
                {
                    response.Code    = 500;
                    response.Message = result.Message;
                }
            }
            catch (Exception ex)
            {
                response.Code    = 500;
                response.Message = "错误:" + ex.Message;
                return(Infrastructure.Json.ToJson(response));
            }
            return(Infrastructure.Json.ToJson(response));
        }
Ejemplo n.º 16
0
 static void MenuOption(string option)
 {
     try
     {
         if (option == "1")
         {
             LoginUtil.ListAllLogins(controller);
         }
         else if (option == "2")
         {
             LoginUtil.FindSpecificLogin(controller, authController);
         }
         else if (option == "3")
         {
             LoginUtil.CreateNewLogin(controller);
         }
         else if (option == "4")
         {
             Console.WriteLine("Be careful, the new auth, will be able to see all the passwords!!!");
             AuthUtil.CheckIfAuth(authController);
             AuthUtil.CreateAuth(authController);
         }
         else if (option == "5")
         {
             Console.WriteLine("Thanks for use the app!!!");
         }
         else
         {
             Menu();
         }
     }
     catch (Exception exception)
     {
         Console.WriteLine($"Sorry, an error has ocurred: {exception.Message}");
         Menu();
     }
 }
Ejemplo n.º 17
0
        public TableData Load(QueryFlowInstanceListReq request)
        {
            //todo:待办/已办/我的
            var result = new TableData();
            var user   = AuthUtil.GetCurrentUser();

            if (request.type == "wait")   //待办事项
            {
                result.count = UnitWork.Find <FlowInstance>(u => u.MakerList == "1" || u.MakerList.Contains(user.User.Id)).Count();

                result.data = UnitWork.Find <FlowInstance>(request.page, request.limit, "CreateDate descending",
                                                           u => u.MakerList == "1" || u.MakerList.Contains(user.User.Id)).ToList();
            }
            else if (request.type == "disposed")  //已办事项(即我参与过的流程)
            {
                var instances = UnitWork.Find <FlowInstanceTransitionHistory>(u => u.CreateUserId == user.User.Id)
                                .Select(u => u.InstanceId).Distinct();
                var query = from ti in instances
                            join ct in UnitWork.Find <FlowInstance>(null) on ti equals ct.Id
                            into tmp
                            from ct in tmp.DefaultIfEmpty()
                            select ct;

                result.data = query.OrderByDescending(u => u.CreateDate)
                              .Skip((request.page - 1) * request.limit)
                              .Take(request.limit).ToList();
                result.count = instances.Count();
            }
            else  //我的流程
            {
                result.count = UnitWork.Find <FlowInstance>(u => u.CreateUserId == user.User.Id).Count();
                result.data  = UnitWork.Find <FlowInstance>(request.page, request.limit,
                                                            "CreateDate descending", u => u.CreateUserId == user.User.Id).ToList();
            }

            return(result);
        }
Ejemplo n.º 18
0
        public static void Seed(this ModelBuilder modelBuilder)
        {
            //create admin password
            var pwd = "01234Admin";

            AuthUtil.CreatePasswordHash(pwd, out byte[] passwordHash, out byte[] passwordSalt);

            //User
            modelBuilder.Entity <FXUser>()
            .HasData(
                new FXUser
            {
                Id                = 1,
                Username          = "******",
                CreatedAt         = DateTime.Now,
                Email             = "*****@*****.**",
                Role              = UserRoles.Admin,
                PasswordHash      = passwordHash,
                PasswordSalt      = passwordSalt,
                IsEmailConfirm    = true,
                IsPhoneNumConfirm = true,
            }
                );;
        }
Ejemplo n.º 19
0
        public string Index(string username, string password)
        {
            var resp = new Response();

            try
            {
                var result = AuthUtil.Login(_appKey, username, password);
                resp.Status = result.Success;
                if (result.Success)
                {
                    resp.Result = "/home/index?Token=" + result.Token;
                }
                else
                {
                    resp.Message = "登陆失败";
                }
            }
            catch (Exception e)
            {
                resp.Status  = false;
                resp.Message = e.Message;
            }
            return(JsonHelper.Instance.Serialize(resp));
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            var password = "******";
            var login    = "******";
            var fullName = " ";
            var email    = " ";
            var path     = " ";

            Data.ConfigurationService.Init();

            var hashPassword = EncryiptionService.GetHashString("password");

            /*Пользователь может сохранить информацию о себе: полное имя, почту (проверять на корректность),
             *  путь на аватарку с раширениями png / jpg / jpeg.*/
            while (true)
            {
                Console.Write("\n1. Зарегистрироваться\n2. Войти\n0. Выход\nВыбор: ");
                switch (Console.ReadLine())
                {
                case "1":
                    Console.WriteLine("Пожалуйста, введите Логин");
                    login = Console.ReadLine();
                    Console.WriteLine("Придумайте пароль:");
                    password = Console.ReadLine();
                    Console.WriteLine("Введите полное имя:");
                    fullName = Console.ReadLine();
                    Console.WriteLine("Введите email:");
                    email = Console.ReadLine();
                    Console.WriteLine("Введите путь к аватарке:");
                    path = Console.ReadLine();
                    var profile = new Profile {
                        FullName = fullName, Email = email, PathToAvatar = path
                    };
                    if (AuthUtil.Registration(login, password, profile) == true)
                    {
                        Console.WriteLine("Вы успешно зарегистрированы!");
                    }
                    else
                    {
                        Console.WriteLine("Ошибка регистрации! Введены неверные данные, либо пользователь уже зарегистрирован");
                    }
                    break;

                case "2":
                    Console.WriteLine("Пожалуйста, введите ваш Логин");
                    login = Console.ReadLine();
                    Console.WriteLine("Введите пароль:");
                    password = Console.ReadLine();
                    if (AuthUtil.Authorization(login, password) == true)
                    {
                        Console.WriteLine("Вы успешно авторизованы! Для продолжения нажмите любую клавишу");
                        Console.ReadLine();
                    }
                    else
                    {
                        Console.WriteLine("Введены неверные данные, повторите попытку");
                        break;
                    }
                    break;

                case "0":
                    return;
                }
            }
        }
Ejemplo n.º 21
0
 public MainForm()
 {
     InitializeComponent();
     authUtil    = AuthUtil.getInstance();
     requestCore = RequestCore.GetInstance();
 }
Ejemplo n.º 22
0
 /// <summary>
 /// 加载一个节点下面的所有
 /// </summary>
 public dynamic Load(int parentId, int pageindex, int pagesize)
 {
     return(_moduleManService.Load(AuthUtil.GetCurrentUser().User.Account, parentId, pageindex, pagesize));
 }
Ejemplo n.º 23
0
 public ActionResult Logout()
 {
     AuthUtil.Logout();
     return(RedirectToAction("Index", "Login"));
 }
 public FlowSchemesController(AuthUtil authUtil, FlowSchemeApp app) : base(authUtil)
 {
     _app = app;
 }
Ejemplo n.º 25
0
        public static async Task <int> Main(string[] args)
        {
            CancellationTokenSource tokenSource = new CancellationTokenSource();
            var parsedArgs = await Args.ParseAsync <CredentialProviderArgs>(args);

            var multiLogger = new MultiLogger();
            var fileLogger  = GetFileLogger();

            if (fileLogger != null)
            {
                multiLogger.Add(fileLogger);
            }

            // Cancellation listener
            Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs eventArgs) =>
            {
                // ConsoleCancelEventArgs.Cancel defaults to false which terminates the current process.
                multiLogger.Verbose(Resources.CancelMessage);
                tokenSource.Cancel();
            };

            var authUtil                    = new AuthUtil(multiLogger);
            var adalTokenCache              = AdalTokenCacheUtils.GetAdalTokenCache(multiLogger);
            var adalTokenProviderFactory    = new VstsAdalTokenProviderFactory(adalTokenCache);
            var bearerTokenProvidersFactory = new BearerTokenProvidersFactory(multiLogger, adalTokenProviderFactory);
            var vstsSessionTokenProvider    = new VstsSessionTokenFromBearerTokenProvider(authUtil, multiLogger);

            List <ICredentialProvider> credentialProviders = new List <ICredentialProvider>
            {
                new VstsBuildTaskServiceEndpointCredentialProvider(multiLogger),
                new VstsBuildTaskCredentialProvider(multiLogger),
                new VstsCredentialProvider(multiLogger, authUtil, bearerTokenProvidersFactory, vstsSessionTokenProvider),
            };

            try
            {
                IRequestHandlers requestHandlers = new RequestHandlerCollection
                {
                    { MessageMethod.GetAuthenticationCredentials, new GetAuthenticationCredentialsRequestHandler(multiLogger, credentialProviders) },
                    { MessageMethod.GetOperationClaims, new GetOperationClaimsRequestHandler(multiLogger, credentialProviders) },
                    { MessageMethod.Initialize, new InitializeRequestHandler(multiLogger) },
                    { MessageMethod.SetLogLevel, new SetLogLevelRequestHandler(multiLogger) },
                    { MessageMethod.SetCredentials, new SetCredentialsRequestHandler(multiLogger) },
                };

                // Help
                if (parsedArgs.Help)
                {
                    Console.WriteLine(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));
                    Console.WriteLine(ArgUsage.GenerateUsageFromTemplate <CredentialProviderArgs>());
                    Console.WriteLine(
                        string.Format(
                            Resources.EnvironmentVariableHelp,
                            EnvUtil.LogPathEnvVar,
                            EnvUtil.SessionTokenCacheEnvVar,
                            EnvUtil.AuthorityEnvVar,
                            EnvUtil.AdalFileCacheEnvVar,
                            EnvUtil.PpeHostsEnvVar,
                            EnvUtil.SupportedHostsEnvVar,
                            EnvUtil.SessionTimeEnvVar,
                            EnvUtil.TokenTypeEnvVar,
                            EnvUtil.BuildTaskUriPrefixes,
                            EnvUtil.BuildTaskAccessToken,
                            EnvUtil.BuildTaskExternalEndpoints,
                            EnvUtil.AdalTokenCacheLocation,
                            EnvUtil.SessionTokenCacheLocation,
                            EnvUtil.WindowsIntegratedAuthenticationEnvVar,
                            EnvUtil.DeviceFlowTimeoutEnvVar
                            ));
                    return(0);
                }

                // Plug-in mode
                if (parsedArgs.Plugin)
                {
                    using (IPlugin plugin = await PluginFactory.CreateFromCurrentProcessAsync(requestHandlers, ConnectionOptions.CreateDefault(), tokenSource.Token).ConfigureAwait(continueOnCapturedContext: false))
                    {
                        multiLogger.Add(new PluginConnectionLogger(plugin.Connection));
                        multiLogger.Verbose(Resources.RunningInPlugin);
                        multiLogger.Verbose(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));

                        await RunNuGetPluginsAsync(plugin, multiLogger, TimeSpan.FromMinutes(2), tokenSource.Token).ConfigureAwait(continueOnCapturedContext: false);
                    }

                    return(0);
                }

                // Stand-alone mode
                if (requestHandlers.TryGet(MessageMethod.GetAuthenticationCredentials, out IRequestHandler requestHandler) && requestHandler is GetAuthenticationCredentialsRequestHandler getAuthenticationCredentialsRequestHandler)
                {
                    multiLogger.Add(new ConsoleLogger());
                    multiLogger.SetLogLevel(parsedArgs.Verbosity);
                    multiLogger.Verbose(Resources.RunningInStandAlone);
                    multiLogger.Verbose(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));

                    if (parsedArgs.Uri == null)
                    {
                        Console.WriteLine(ArgUsage.GenerateUsageFromTemplate <CredentialProviderArgs>());
                        return(1);
                    }

                    GetAuthenticationCredentialsRequest  request  = new GetAuthenticationCredentialsRequest(parsedArgs.Uri, isRetry: parsedArgs.IsRetry, isNonInteractive: parsedArgs.NonInteractive, parsedArgs.CanShowDialog);
                    GetAuthenticationCredentialsResponse response = await getAuthenticationCredentialsRequestHandler.HandleRequestAsync(request).ConfigureAwait(continueOnCapturedContext: false);

                    multiLogger.Info($"{Resources.Username}: {response?.Username}");
                    multiLogger.Info($"{Resources.Password}: {(parsedArgs.RedactPassword ? Resources.Redacted : response?.Password)}");
                    return(0);
                }

                return(-1);
            }
            finally
            {
                foreach (ICredentialProvider credentialProvider in credentialProviders)
                {
                    credentialProvider.Dispose();
                }
            }
        }
Ejemplo n.º 26
0
 public void PrepareRequest(HttpRequestMessage request)
 {
     AuthUtil.AddAuthorizationHeaders(new HttpRequestMessage().Headers, request, _configuration, _accessTokenCredentials);
 }
Ejemplo n.º 27
0
        public static async Task <int> Main(string[] args)
        {
            CancellationTokenSource tokenSource = new CancellationTokenSource();
            var parsedArgs = await Args.ParseAsync <CredentialProviderArgs>(args);

            var multiLogger = new MultiLogger();
            var fileLogger  = GetFileLogger();

            if (fileLogger != null)
            {
                multiLogger.Add(fileLogger);
            }

            // Cancellation listener
            Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs eventArgs) =>
            {
                // ConsoleCancelEventArgs.Cancel defaults to false which terminates the current process.
                multiLogger.Verbose(Resources.CancelMessage);
                tokenSource.Cancel();
            };

            var authUtil                    = new AuthUtil(multiLogger);
            var adalTokenCache              = AdalTokenCacheUtils.GetAdalTokenCache(multiLogger);
            var adalTokenProviderFactory    = new VstsAdalTokenProviderFactory(adalTokenCache);
            var bearerTokenProvidersFactory = new BearerTokenProvidersFactory(multiLogger, adalTokenProviderFactory);
            var vstsSessionTokenProvider    = new VstsSessionTokenFromBearerTokenProvider(authUtil, multiLogger);

            List <ICredentialProvider> credentialProviders = new List <ICredentialProvider>
            {
                new VstsBuildTaskServiceEndpointCredentialProvider(multiLogger),
                new VstsBuildTaskCredentialProvider(multiLogger),
                new VstsCredentialProvider(multiLogger, authUtil, bearerTokenProvidersFactory, vstsSessionTokenProvider),
            };

            try
            {
                IRequestHandlers requestHandlers = new RequestHandlerCollection
                {
                    { MessageMethod.GetAuthenticationCredentials, new GetAuthenticationCredentialsRequestHandler(multiLogger, credentialProviders) },
                    { MessageMethod.GetOperationClaims, new GetOperationClaimsRequestHandler(multiLogger, credentialProviders) },
                    { MessageMethod.Initialize, new InitializeRequestHandler(multiLogger) },
                    { MessageMethod.SetLogLevel, new SetLogLevelRequestHandler(multiLogger) },
                    { MessageMethod.SetCredentials, new SetCredentialsRequestHandler(multiLogger) },
                };

                // Help
                if (parsedArgs.Help)
                {
                    Console.WriteLine(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));
                    Console.WriteLine(ArgUsage.GenerateUsageFromTemplate <CredentialProviderArgs>());
                    Console.WriteLine(
                        string.Format(
                            Resources.EnvironmentVariableHelp,
                            EnvUtil.LogPathEnvVar,
                            EnvUtil.SessionTokenCacheEnvVar,
                            EnvUtil.AuthorityEnvVar,
                            EnvUtil.AdalFileCacheEnvVar,
                            EnvUtil.PpeHostsEnvVar,
                            EnvUtil.SupportedHostsEnvVar,
                            EnvUtil.SessionTimeEnvVar,
                            EnvUtil.TokenTypeEnvVar,
                            EnvUtil.BuildTaskUriPrefixes,
                            EnvUtil.BuildTaskAccessToken,
                            EnvUtil.BuildTaskExternalEndpoints,
                            EnvUtil.AdalTokenCacheLocation,
                            EnvUtil.SessionTokenCacheLocation,
                            EnvUtil.WindowsIntegratedAuthenticationEnvVar,
                            EnvUtil.DeviceFlowTimeoutEnvVar
                            ));
                    return(0);
                }

                // Plug-in mode
                if (parsedArgs.Plugin)
                {
                    try
                    {
                        using (IPlugin plugin = await PluginFactory.CreateFromCurrentProcessAsync(requestHandlers, ConnectionOptions.CreateDefault(), tokenSource.Token).ConfigureAwait(continueOnCapturedContext: false))
                        {
                            multiLogger.Add(new PluginConnectionLogger(plugin.Connection));
                            multiLogger.Verbose(Resources.RunningInPlugin);
                            multiLogger.Verbose(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));

                            await WaitForPluginExitAsync(plugin, multiLogger, TimeSpan.FromMinutes(2)).ConfigureAwait(continueOnCapturedContext: false);
                        }
                    }
                    catch (OperationCanceledException ex)
                    {
                        // When restoring from multiple sources, one of the sources will throw an unhandled TaskCanceledException
                        // if it has been restored successfully from a different source.

                        // This is probably more confusing than interesting to users, but may be helpful in debugging,
                        // so log the exception but not to the console.
                        multiLogger.Log(LogLevel.Verbose, allowOnConsole: false, ex.ToString());
                    }

                    return(0);
                }

                // Stand-alone mode
                if (requestHandlers.TryGet(MessageMethod.GetAuthenticationCredentials, out IRequestHandler requestHandler) && requestHandler is GetAuthenticationCredentialsRequestHandler getAuthenticationCredentialsRequestHandler)
                {
                    // When emitting machine-readable output to standard out, logging (including Device Code prompts) must be emitted to standard error
                    if (parsedArgs.OutputFormat == OutputFormat.Json)
                    {
                        multiLogger.Add(new StandardErrorLogger());
                    }
                    else
                    {
                        multiLogger.Add(new StandardOutputLogger());
                    }

                    multiLogger.SetLogLevel(parsedArgs.Verbosity);
                    multiLogger.Verbose(Resources.RunningInStandAlone);
                    multiLogger.Verbose(string.Format(Resources.CommandLineArgs, Program.Version, Environment.CommandLine));

                    if (parsedArgs.Uri == null)
                    {
                        Console.WriteLine(ArgUsage.GenerateUsageFromTemplate <CredentialProviderArgs>());
                        return(1);
                    }

                    GetAuthenticationCredentialsRequest  request  = new GetAuthenticationCredentialsRequest(parsedArgs.Uri, isRetry: parsedArgs.IsRetry, isNonInteractive: parsedArgs.NonInteractive, parsedArgs.CanShowDialog);
                    GetAuthenticationCredentialsResponse response = await getAuthenticationCredentialsRequestHandler.HandleRequestAsync(request).ConfigureAwait(continueOnCapturedContext: false);

                    // Fail if credentials are not found
                    if (response?.ResponseCode != MessageResponseCode.Success)
                    {
                        return(2);
                    }

                    string resultUsername = response?.Username;
                    string resultPassword = parsedArgs.RedactPassword ? Resources.Redacted : response?.Password;
                    if (parsedArgs.OutputFormat == OutputFormat.Json)
                    {
                        // Manually write the JSON output, since we don't use ConsoleLogger in JSON mode (see above)
                        Console.WriteLine(JsonConvert.SerializeObject(new CredentialResult(resultUsername, resultPassword)));
                    }
                    else
                    {
                        multiLogger.Info($"{Resources.Username}: {resultUsername}");
                        multiLogger.Info($"{Resources.Password}: {resultPassword}");
                    }
                    return(0);
                }

                return(-1);
            }
            finally
            {
                foreach (ICredentialProvider credentialProvider in credentialProviders)
                {
                    credentialProvider.Dispose();
                }
            }
        }
Ejemplo n.º 28
0
        public string GetNavBar()
        {
            var user = AuthUtil.GetCurrentUser();

            return(BuilderNavBar(user.ModuleWithChildren));
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 创建一个实例
        /// </summary>
        /// <returns></returns>
        public bool CreateInstance(JObject obj)
        {
            var flowInstance = obj.ToObject <FlowInstance>();

            //获取提交的表单数据
            var frmdata = new JObject();

            foreach (var property in obj.Properties().Where(U => U.Name.Contains("data_")))
            {
                frmdata[property.Name] = property.Value;
            }
            flowInstance.FrmData = JsonHelper.Instance.Serialize(frmdata);

            //创建运行实例
            var wfruntime = new FlowRuntime(flowInstance);
            var user      = AuthUtil.GetCurrentUser();

            #region 根据运行实例改变当前节点状态
            flowInstance.ActivityId     = wfruntime.runtimeModel.nextNodeId;
            flowInstance.ActivityType   = wfruntime.GetNextNodeType();//-1无法运行,0会签开始,1会签结束,2一般节点,4流程运行结束
            flowInstance.ActivityName   = wfruntime.runtimeModel.nextNode.name;
            flowInstance.PreviousId     = wfruntime.runtimeModel.currentNodeId;
            flowInstance.CreateUserId   = user.User.Id;
            flowInstance.CreateUserName = user.User.Account;
            flowInstance.MakerList      = (wfruntime.GetNextNodeType() != 4 ? GetMakerList(wfruntime) : "");//当前节点可执行的人信息
            flowInstance.IsFinish       = (wfruntime.GetNextNodeType() == 4 ? 1 : 0);

            UnitWork.Add(flowInstance);
            #endregion

            #region 流程操作记录
            FlowInstanceOperationHistory processOperationHistoryEntity = new FlowInstanceOperationHistory
            {
                InstanceId     = flowInstance.Id,
                CreateUserId   = user.User.Id,
                CreateUserName = user.User.Name,
                CreateDate     = DateTime.Now,
                Content        = "【创建】"
                                 + user.User.Name
                                 + "创建了一个流程进程【"
                                 + flowInstance.Code + "/"
                                 + flowInstance.CustomName + "】"
            };
            UnitWork.Add(processOperationHistoryEntity);
            #endregion

            #region 流转记录

            FlowInstanceTransitionHistory processTransitionHistoryEntity = new FlowInstanceTransitionHistory
            {
                InstanceId     = flowInstance.Id,
                FromNodeId     = wfruntime.runtimeModel.currentNodeId,
                FromNodeName   = wfruntime.runtimeModel.currentNode.name,
                FromNodeType   = wfruntime.runtimeModel.currentNodeType,
                ToNodeId       = wfruntime.runtimeModel.nextNodeId,
                ToNodeName     = wfruntime.runtimeModel.nextNode.name,
                ToNodeType     = wfruntime.runtimeModel.nextNodeType,
                IsFinish       = wfruntime.runtimeModel.nextNodeType == 4?1:0,
                TransitionSate = 0,
                CreateUserId   = user.User.Id,
                CreateUserName = user.User.Name
            };
            #endregion

            UnitWork.Add(processTransitionHistoryEntity);
            UnitWork.Save();
            return(true);
        }
Ejemplo n.º 30
0
        /// <summary>
        /// 驳回
        /// </summary>
        /// <returns></returns>
        public bool NodeReject(VerificationReq reqest)
        {
            var user = AuthUtil.GetCurrentUser().User;

            FlowInstance flowInstance = Get(reqest.FlowInstanceId);

            FlowRuntime wfruntime = new FlowRuntime(flowInstance);

            string resnode = "";

            if (string.IsNullOrEmpty(reqest.NodeRejectStep))
            {
                resnode = wfruntime.RejectNode();
            }
            else
            {
                resnode = reqest.NodeRejectStep;
            }

            var tag = new Tag
            {
                Description = reqest.VerificationOpinion,
                Taged       = 0,
                UserId      = user.Id,
                UserName    = user.Name
            };

            wfruntime.MakeTagNode(wfruntime.runtimeModel.currentNodeId, tag);
            flowInstance.IsFinish = 4;//4表示驳回(需要申请者重新提交表单)
            if (resnode != "")
            {
                flowInstance.PreviousId   = flowInstance.ActivityId;
                flowInstance.ActivityId   = resnode;
                flowInstance.ActivityType = wfruntime.GetNodeType(resnode);
                flowInstance.ActivityName = wfruntime.runtimeModel.nodes[resnode].name;
                flowInstance.MakerList    = GetMakerList(wfruntime.runtimeModel.nodes[resnode], flowInstance.PreviousId);//当前节点可执行的人信息
                #region 流转记录

                UnitWork.Add(new FlowInstanceTransitionHistory
                {
                    InstanceId     = flowInstance.Id,
                    CreateUserId   = user.Id,
                    CreateUserName = user.Name,
                    FromNodeId     = wfruntime.runtimeModel.currentNodeId,
                    FromNodeName   = wfruntime.runtimeModel.currentNode.name,
                    FromNodeType   = wfruntime.runtimeModel.currentNodeType,
                    ToNodeId       = wfruntime.runtimeModel.nextNodeId,
                    ToNodeName     = wfruntime.runtimeModel.nextNode.name,
                    ToNodeType     = wfruntime.runtimeModel.nextNodeType,
                    IsFinish       = wfruntime.runtimeModel.nextNodeType == 4 ? 1 : 0,
                    TransitionSate = 1
                });
                #endregion
            }

            UnitWork.Update(flowInstance);

            UnitWork.Add(new FlowInstanceOperationHistory
            {
                InstanceId       = reqest.FlowInstanceId
                , CreateUserId   = user.Id
                , CreateUserName = user.Name
                , CreateDate     = DateTime.Now
                , Content        = "【"
                                   + wfruntime.runtimeModel.currentNode.name
                                   + "】【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "】驳回,备注:"
                                   + reqest.VerificationOpinion
            });

            UnitWork.Save();

            return(true);
        }