HarvestConnect 1.0.0

Helper for authenticating via Harvest (https://www.getharvest.com/)

Install-Package HarvestConnect -Version 1.0.0
dotnet add package HarvestConnect --version 1.0.0
<PackageReference Include="HarvestConnect" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add HarvestConnect --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Harvest connect

Helper for authenticating via Harvest (https://www.getharvest.com)

How to use?

  1. Register a OAuth client over at https://&lt;YOURACCOUNT&gt;.harvestapp.com/oauth2_clients
  2. Install clone this repo and include it in your project.
  3. Use the code below to set it up.
 public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthorization();
            services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = HarvestOptions.Scheme;
                    options.DefaultChallengeScheme = HarvestOptions.Scheme;
                    options.DefaultSignInScheme = "auth";
                    options.DefaultSignOutScheme = "auth";
                })
                .AddCookie("auth", options =>
                {
                    options.LogoutPath = "/logout";
                })
                .AddHarvest(options =>
                {
                    options.ClientId = "<provided by Harvest>";
                    options.ClientSecret = "<provided by harvest>";
                    options.BaseUrl = "<base url of your site, e.g. http://localhost:13370>";
                    options.Events = new HarvestEvents
                    {
                        // Called on succesful login
                        OnSuccessfulLogin = context =>
                        {
                            // Add the claims your app requires...
                            context.Identity.AddClaim(new Claim(context.Identity.NameClaimType,
                                context.WhoAmI.user.first_name));

                            if (context.WhoAmI.user.admin)
                            {
                                context.Identity.AddClaim(new Claim(context.Identity.RoleClaimType, "Administrator"));
                            }

                            context.Identity.AddClaim(new Claim("Email", context.WhoAmI.user.email));

                            // ... or do other stuff with the data received, e.g.:
                            // await _db.UpdateAvatar(context.WhoAmI.user.id, context.WhoAmI.user.avatar_url);

                            return Task.CompletedTask;
                        },
                        // Called when login fails or the user denies the login attempt
                        OnFailedLogin = async context =>
                        {
                            await context.HttpContext.SignOutAsync();
                            context.HttpContext.Response.Redirect("/home/logout?message=" + WebUtility.UrlEncode(context.FailureMessage));
                        }
                    };
                });
            services.AddMvc();
        }

Harvest connect

Helper for authenticating via Harvest (https://www.getharvest.com)

How to use?

  1. Register a OAuth client over at https://&lt;YOURACCOUNT&gt;.harvestapp.com/oauth2_clients
  2. Install clone this repo and include it in your project.
  3. Use the code below to set it up.
 public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthorization();
            services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = HarvestOptions.Scheme;
                    options.DefaultChallengeScheme = HarvestOptions.Scheme;
                    options.DefaultSignInScheme = "auth";
                    options.DefaultSignOutScheme = "auth";
                })
                .AddCookie("auth", options =>
                {
                    options.LogoutPath = "/logout";
                })
                .AddHarvest(options =>
                {
                    options.ClientId = "<provided by Harvest>";
                    options.ClientSecret = "<provided by harvest>";
                    options.BaseUrl = "<base url of your site, e.g. http://localhost:13370>";
                    options.Events = new HarvestEvents
                    {
                        // Called on succesful login
                        OnSuccessfulLogin = context =>
                        {
                            // Add the claims your app requires...
                            context.Identity.AddClaim(new Claim(context.Identity.NameClaimType,
                                context.WhoAmI.user.first_name));

                            if (context.WhoAmI.user.admin)
                            {
                                context.Identity.AddClaim(new Claim(context.Identity.RoleClaimType, "Administrator"));
                            }

                            context.Identity.AddClaim(new Claim("Email", context.WhoAmI.user.email));

                            // ... or do other stuff with the data received, e.g.:
                            // await _db.UpdateAvatar(context.WhoAmI.user.id, context.WhoAmI.user.avatar_url);

                            return Task.CompletedTask;
                        },
                        // Called when login fails or the user denies the login attempt
                        OnFailedLogin = async context =>
                        {
                            await context.HttpContext.SignOutAsync();
                            context.HttpContext.Response.Redirect("/home/logout?message=" + WebUtility.UrlEncode(context.FailureMessage));
                        }
                    };
                });
            services.AddMvc();
        }

Release Notes

https://github.com/AdviseSolutions/HarvestConnect/releases

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.0.0 287 9/26/2017