コード例 #1
0
        public ExternalAuthenticationGrant(
            UserManager <TUser> userManager,
            IProviderRepository providerRepository,
            IFacebookAuthProvider facebookAuthProvider,
            IGoogleAuthProvider googleAuthProvider,
            ITwitterAuthProvider twitterAuthProvider,
            ILinkedInAuthProvider linkeInAuthProvider,
            INonEmailUserProcessor nonEmailUserProcessor,
            IEmailUserProcessor emailUserProcessor
            )
        {
            _userManager           = userManager ?? throw new ArgumentNullException(nameof(userManager));
            _providerRepository    = providerRepository ?? throw new ArgumentNullException(nameof(providerRepository));
            _facebookAuthProvider  = facebookAuthProvider ?? throw new ArgumentNullException(nameof(facebookAuthProvider));
            _googleAuthProvider    = googleAuthProvider ?? throw new ArgumentNullException(nameof(googleAuthProvider));
            _twitterAuthProvider   = twitterAuthProvider ?? throw new ArgumentNullException(nameof(twitterAuthProvider));
            _linkedAuthProvider    = linkeInAuthProvider ?? throw new ArgumentNullException(nameof(linkeInAuthProvider));
            _nonEmailUserProcessor = nonEmailUserProcessor ?? throw new ArgumentNullException(nameof(nonEmailUserProcessor));
            _emailUserProcessor    = emailUserProcessor ?? throw new ArgumentNullException(nameof(nonEmailUserProcessor));

            _providers = new Dictionary <ProviderType, IExternalAuthProvider>
            {
                { ProviderType.Facebook, _facebookAuthProvider },
                { ProviderType.Google, _googleAuthProvider },
                { ProviderType.Twitter, _twitterAuthProvider },
                { ProviderType.LinkedIn, _linkedAuthProvider }
            };
        }
        public ExternalAuthenticationGrant(
            UserManager <ApplicationUser> userManager,
            IUnitOfWork <DatabaseContext> unitOfWork,
            IExternalUserRepository externalUserRepository,
            IProviderRepository providerRepository,
            IFacebookAuthProvider facebookAuthProvider,
            IGoogleAuthProvider googleAuthProvider,
            ITwitterAuthProvider twitterAuthProvider,
            ILinkedInAuthProvider linkeInAuthProvider,
            INonEmailUserProcessor nonEmailUserProcessor,
            IEmailUserProcessor emailUserProcessor
            )
        {
            _userManager            = userManager ?? throw new ArgumentNullException(nameof(userManager));
            _unitOfWork             = unitOfWork ?? throw new ArgumentNullException(nameof(unitOfWork));
            _externalUserRepository = externalUserRepository ?? throw new ArgumentNullException(nameof(externalUserRepository));
            _providerRepository     = providerRepository ?? throw new ArgumentNullException(nameof(providerRepository));
            _facebookAuthProvider   = facebookAuthProvider ?? throw new ArgumentNullException(nameof(facebookAuthProvider));
            _googleAuthProvider     = googleAuthProvider ?? throw new ArgumentNullException(nameof(googleAuthProvider));
            _twitterAuthProvider    = twitterAuthProvider ?? throw new ArgumentNullException(nameof(twitterAuthProvider));
            _linkedAuthProvider     = linkeInAuthProvider ?? throw new ArgumentNullException(nameof(linkeInAuthProvider));
            _nonEmailUserProcessor  = nonEmailUserProcessor ?? throw new ArgumentNullException(nameof(nonEmailUserProcessor));
            _emailUserProcessor     = emailUserProcessor ?? throw new ArgumentNullException(nameof(nonEmailUserProcessor));

            providers = new Dictionary <ProviderType, IExternalAuthProvider>();
            providers.Add(ProviderType.Facebook, _facebookAuthProvider);
            providers.Add(ProviderType.Google, _googleAuthProvider);
            providers.Add(ProviderType.Twitter, _twitterAuthProvider);
            providers.Add(ProviderType.LinkedIn, _linkedAuthProvider);
        }
コード例 #3
0
        // GET: StudentController/Edit/5
        public ActionResult GetAssignment(string id, [FromServices] IGoogleAuthProvider auth)
        {
            var listCourseWorkResponse = new ListCourseWorkResponse();

            string pageToken = null;

            do
            {
                var request = this.GetGoogleClassRoomService(auth).Courses.CourseWork.List(id);
                request.PageSize  = 100;
                request.PageToken = pageToken;
                var response = request.Execute();
                listCourseWorkResponse = response;
            } while (pageToken != null);

            List <Models.CourseWork> CourseWorkList = new List <Models.CourseWork>();

            foreach (CourseWork item in listCourseWorkResponse.CourseWork)
            {
                CourseWorkList.Add(
                    new Models.CourseWork()
                {
                    CourseWorkId = item.Id,
                    CourseId     = id,
                    Type         = "Assigmment",
                    Title        = item.Title,
                    Description  = item.Description,
                });
            }
            return(View(CourseWorkList));
        }
コード例 #4
0
        public async Task <UserResponseModel> Google(IGoogleAuthProvider googleAuthProvider)
        {
            var googleResponse = await googleAuthService.GetUserData(googleAuthProvider);

            var email    = googleResponse.EmailAddresses.FirstOrDefault();
            var userName = googleResponse.Names.FirstOrDefault();
            var photo    = googleResponse.Photos.FirstOrDefault();

            var user = new User
            {
                UserName = userName.DisplayName,
                Email    = email.Value,
                Profile  = new DAL.Entities.Profile
                {
                    Photo  = photo.Url,
                    Status = StatusProvider.NewArtist
                }
            };

            await userManager.CreateAsync(user);

            var jwt = GenerateJwtToken(user);

            return(Ok(user, jwt));
        }
コード例 #5
0
        public ActionResult UpdateAssignment(IFormCollection collection,
                                             [FromServices] IGoogleAuthProvider auth)
        {
            string courseId     = collection["CourseId"];
            string courseWorkId = collection["CourseWorkId"];
            string answer       = collection["Answer"];

            Document document = new Document()
            {
                Title = "My Assignment " + courseWorkId
            };

            var docService = this.GetGoogleDocsService(auth);

            var docReq = docService.Documents.Create(document);
            var docRes = docReq.Execute();

            string documentId = docRes.DocumentId;
            string docUrl     = $"https://docs.google.com/document/d/{documentId}/edit";

            DocumentsResource.BatchUpdateRequest batchUpdate =
                docService
                .Documents
                .BatchUpdate(GenerateGoogleDocText(answer), documentId);

            var batchUpdateResponse = batchUpdate.Execute();

            var submission = this.GetGoogleClassRoomService(auth)
                             .Courses
                             .CourseWork
                             .StudentSubmissions
                             .List(courseId, courseWorkId).Execute();

            string submissionId = submission.StudentSubmissions[0].Id;


            List <Attachment> attachments = new List <Attachment>()
            {
                new Attachment()
                {
                    Link = new Google.Apis.Classroom.v1.Data.Link()
                    {
                        Url = docUrl
                    }
                }
            };

            ModifyAttachmentsRequest body = new ModifyAttachmentsRequest()
            {
                AddAttachments = attachments
            };

            var req = this.GetGoogleClassRoomService(auth)
                      .Courses
                      .CourseWork
                      .StudentSubmissions
                      .ModifyAttachments(body, courseId, courseWorkId, submissionId).Execute();

            return(Redirect(req.AlternateLink));
        }
コード例 #6
0
        public async Task <IActionResult> Translate([FromServices] IGoogleAuthProvider auth)
        {
            // Check if the required scopes have been granted.
            if (await auth.RequireScopesAsync(TranslateService.Scope.CloudTranslation) is IActionResult authResult)
            {
                // If the required scopes are not granted, then a non-null IActionResult will be returned,
                // which must be returned from the action. This triggers incremental authorization.
                // Once the user has granted the scope, an automatic redirect to this action will be issued.
                return(authResult);
            }
            // The required scopes have now been granted.
            GoogleCredential cred = await auth.GetCredentialAsync();

            var service = new TranslateService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var translateRequest = service.Translations.Translate(new TranslateTextRequest
            {
                Format = "text",
                Q      = new List <string> {
                    "The cold weather will soon be over"
                },
                Source = "en",
                Target = "fr",
            });
            var response = await translateRequest.ExecuteAsync();

            return(View((object)response.Translations.Single().TranslatedText));
        }
コード例 #7
0
        public ActionResult AddCourseWork(IFormCollection collection,
                                          [FromServices] IGoogleAuthProvider auth)
        {
            string          title       = collection["Title"];
            string          description = collection["Description"];
            string          courseId    = collection["CourseId"];
            List <Material> materials   = new List <Material>()
            {
                new Material()
                {
                    Link = new Link()
                    {
                        Url = "https://www.researchgate.net/publication/303182670_Minimum_Viable_Product_or_Multiple_Facet_Product_The_Role_of_MVP_in_Software_Startups",
                    }
                }
            };

            CourseWork courseWork = new CourseWork()
            {
                CourseId                = courseId,
                Title                   = title,
                Description             = description,
                WorkType                = "ASSIGNMENT",
                MaxPoints               = 100,
                State                   = "PUBLISHED",
                AssociatedWithDeveloper = true,
                Materials               = materials,
            };
            var request = this.GetGoogleClassRoomService(auth).Courses.CourseWork.Create(courseWork, courseId).Execute();

            return(Redirect(request.AlternateLink));
        }
コード例 #8
0
        public async Task <IActionResult> Translate([FromServices] IGoogleAuthProvider auth, [FromServices] ClientInfo clientInfo)
        {
            // Programmatic auth check.
            if (await auth.RequireScopesAsync(TranslateService.Scope.CloudTranslation) is IActionResult authResult)
            {
                // If the required scopes are not authorized, then a non-null IActionResult will be returned,
                // which must be returned from the action.
                return(authResult);
            }
            // The required scopes have now been authorized.
            var cred = await auth.GetCredentialAsync();

            var service = new TranslateService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var translateRequest = service.Translations.Translate(new TranslateTextRequest
            {
                Format = "text",
                Q      = new List <string> {
                    "The cold weather will soon be over"
                },
                Source = "en",
                Target = "fr",
            });
            var response = await translateRequest.ExecuteAsync();

            return(View((object)response.Translations.Single().TranslatedText));
        }
コード例 #9
0
        public async Task <IActionResult> StorageBucketListing([FromServices] IGoogleAuthProvider auth)
        {
            // Read the project ID to use to list Storage buckets.
            // For demonstration purposes we are reading the project ID from the
            // GOOGLE_PROJECT_ID environment variable.
            // The project ID used here does not have to be the same associated to the OAuth2 Client ID
            // used by your app.
            string projectId = Environment.GetEnvironmentVariable(GoogleProjectIdEnvVar);

            if (string.IsNullOrEmpty(projectId))
            {
                throw new InvalidOperationException(
                          $"Please set the {GoogleProjectIdEnvVar} value a Google project ID to list Storage buckets from.");
            }

            GoogleCredential cred = await auth.GetCredentialAsync();

            var service = new StorageService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var buckets = await service.Buckets.List(projectId).ExecuteAsync();

            var bucketNames = buckets.Items.Select(x => x.Name).ToList();

            return(View(bucketNames));
        }
コード例 #10
0
        public ExternalAuthenticationGrant(UserManager <User> userManager, IGoogleAuthProvider googleAuthProvider)
        {
            _userManager        = userManager;
            _googleAuthProvider = googleAuthProvider;

            _providers = new Dictionary <ProviderType, IExternalAuthProvider>
            {
                { ProviderType.Google, _googleAuthProvider }
            };
        }
コード例 #11
0
        public DocsService GetGoogleDocsService([FromServices] IGoogleAuthProvider auth)
        {
            GoogleCredential cred    = auth.GetCredentialAsync().GetAwaiter().GetResult();
            DocsService      service = new DocsService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred,
                ApplicationName       = "WebCraft",
            });

            return(service);
        }
コード例 #12
0
        public GoogleProvider(
            IGoogleAuthProvider googleAuthProvider,
            ILogger <GoogleProvider> logger)
        {
            this.googleAuthProvider = googleAuthProvider;
            this.logger             = logger;

            this.Google = new CustomsearchService(new BaseClientService.Initializer
            {
                ApiKey          = googleAuthProvider.GetApiKey(),
                ApplicationName = GetType().ToString()
            });
        }
コード例 #13
0
        public async Task <IActionResult> ForceTokenRefresh([FromServices] IGoogleAuthProvider auth)
        {
            // Obtain OAuth related values before the refresh.
            AuthenticateResult authResult0 = await HttpContext.AuthenticateAsync();

            string accessToken0  = authResult0.Properties.GetTokenValue(OpenIdConnectParameterNames.AccessToken);
            string refreshToken0 = authResult0.Properties.GetTokenValue(OpenIdConnectParameterNames.RefreshToken);
            string issuedUtc0    = authResult0.Properties.IssuedUtc?.ToString() ?? "<missing>";
            string expiresUtc0   = authResult0.Properties.ExpiresUtc?.ToString() ?? "<missing>";

            // Force token refresh by specifying a too-long refresh window.
            GoogleCredential cred = await auth.GetCredentialAsync(TimeSpan.FromHours(24));

            // Obtain OAuth related values after the refresh.
            AuthenticateResult authResult1 = await HttpContext.AuthenticateAsync();

            string accessToken1  = authResult1.Properties.GetTokenValue(OpenIdConnectParameterNames.AccessToken);
            string refreshToken1 = authResult1.Properties.GetTokenValue(OpenIdConnectParameterNames.RefreshToken);
            string issuedUtc1    = authResult1.Properties.IssuedUtc?.ToString() ?? "<missing>";
            string expiresUtc1   = authResult1.Properties.ExpiresUtc?.ToString() ?? "<missing>";

            // As demonstration compare the old values with the new ones and check that everything is
            // as it should be.
            string credAccessToken = await cred.UnderlyingCredential.GetAccessTokenForRequestAsync();

            bool accessTokenChanged        = accessToken0 != accessToken1;
            bool credHasCorrectAccessToken = credAccessToken == accessToken1;

            bool pass = accessTokenChanged && credHasCorrectAccessToken;

            var model = new ForceTokenRefreshModel
            {
                Results = new[]
                {
                    $"Before Access Token: '{accessToken0}'",
                    $"Before Refresh Token: '{refreshToken0}'",
                    $"Before Issued UTC: '{issuedUtc0}'",
                    $"Before Expires UTC: '{expiresUtc0}'",
                    $"After Access Token: '{accessToken1}'",
                    $"After Refresh Token: '{refreshToken1}'",
                    $"After Issued UTC: '{issuedUtc1}'",
                    $"After Expires UTC: '{expiresUtc1}'",
                    $"Access token changed: {accessTokenChanged}",
                    $"Credential has correct access token: {credHasCorrectAccessToken}",
                    $"Pass: {pass}"
                },
                AccessToken = accessToken1
            };

            return(View(model));
        }
コード例 #14
0
        public async Task <IActionResult> StorageBucketListing([FromServices] IGoogleAuthProvider auth, [FromServices] ClientInfo clientInfo)
        {
            var cred = await auth.GetCredentialAsync();

            var service = new StorageService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var buckets = await service.Buckets.List(clientInfo.ProjectId).ExecuteAsync();

            var bucketNames = buckets.Items.Select(x => x.Name).ToList();

            return(View(bucketNames));
        }
コード例 #15
0
        public async Task <IActionResult> DriveFileList([FromServices] IGoogleAuthProvider auth)
        {
            GoogleCredential cred = await auth.GetCredentialAsync();

            var service = new DriveService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var files = await service.Files.List().ExecuteAsync();

            var fileNames = files.Files.Select(x => x.Name).ToList();

            return(View(fileNames));
        }
コード例 #16
0
        public async Task OnGetAsync([FromServices] IGoogleAuthProvider auth, string BaseURL)
        {
            Urls url = new Urls(BaseURL);

            if (string.IsNullOrEmpty(BaseURL) || !url.UrlAbsolute() || !url.UrlValid())
            {
                MsgText = "Service directory not found, check you have specified the correct URL"; //move all text to config
                Response.Redirect(string.Format("{0}://{1}{2}", Request.Scheme, Request.Host.Host, Url.Content("~")));
                return;
            }

            GoogleCredential credential = null;
            int attempt = 0;

            while (attempt < 3)
            {
                try
                {
                    credential = await auth.GetCredentialAsync();

                    break;
                }
                catch (InvalidOperationException)
                {
                    attempt++;
                    foreach (string key in Request.Cookies.Keys)
                    {
                        Response.Cookies.Delete(key);
                    }
                }
            }

            string spreadsheetId = await GoogleSheetsExport.CreateSpreadsheetAsync(credential);

            Thread t2 = new Thread(async delegate()
            {
                try
                {
                    bool back = await GoogleSheetsExport.WriteToSpreadsheetAsync(spreadsheetId, credential, BaseURL, "configuration.json");
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, ex.Message);
                }
            });

            t2.Start();

            Response.Redirect("https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/");
        }
コード例 #17
0
        public async Task <IEnumerable <WeatherForecast> > Get(
            [FromServices] IGoogleAuthProvider googleAuthProvider)
        {
            AuthenticateResult auth = await HttpContext.AuthenticateAsync();

            string idToken = (auth.Properties ?? throw new InvalidOperationException()).GetTokenValue(OpenIdConnectParameterNames.IdToken);

            _logger.LogDebug(idToken);
            if (User.Identity == null || !User.Identity.IsAuthenticated)
            {
                return(null);
            }
            return(await _weatherService.GetWeather());
        }
コード例 #18
0
        public async Task <Person> GetUserData(IGoogleAuthProvider authProvider)
        {
            var credential = await authProvider.GetCredentialAsync();

            var service = new PeopleServiceService(new Google.Apis.Services.BaseClientService.Initializer()
            {
                ApplicationName       = "Disco",
                HttpClientInitializer = credential
            });

            var response = service.People.Get("people/me").Execute();

            return(response);
        }
コード例 #19
0
ファイル: AccountService.cs プロジェクト: leonchikk/madjuns
 public AccountService(
     IRepository <Account> accountsRepository,
     IUnitOfWork unitOfWork,
     ITokenService tokenService,
     IVkAuthProvider vkAuthProvider,
     IGoogleAuthProvider googleAuthProvider,
     IFacebookAuthProvider facebookAuthProvider)
 {
     _accountsRepository   = accountsRepository;
     _unitOfWork           = unitOfWork;
     _vkAuthProvider       = vkAuthProvider;
     _googleAuthProvider   = googleAuthProvider;
     _facebookAuthProvider = facebookAuthProvider;
     _tokenService         = tokenService;
 }
コード例 #20
0
 public AccountService(
     UserManager <Player> userManager,
     IJwtProvider jwtProvider,
     IGoogleAuthProvider googleAuthProvider,
     IFacebookAuthProvider facebookAuthProvider,
     IGitHubAuthProvider gitHubAuthProvider,
     IBaseUnitOfWork unitOfWork)
     : base(unitOfWork)
 {
     _userManager          = userManager;
     _jwtProvider          = jwtProvider;
     _googleAuthProvider   = googleAuthProvider;
     _facebookAuthProvider = facebookAuthProvider;
     _gitHubAuthProvider   = gitHubAuthProvider;
 }
コード例 #21
0
        public async Task <IActionResult> ForceTokenRefreshCheckPersisted([FromServices] IGoogleAuthProvider auth, [FromForm] string expectedAccessToken)
        {
            // Check that the refreshed access token is correctly persisted across requests.
            var cred = await auth.GetCredentialAsync();

            var credAccessToken = await cred.UnderlyingCredential.GetAccessTokenForRequestAsync();

            var pass = credAccessToken == expectedAccessToken;

            return(View(new[]
            {
                $"Expected access token: '{expectedAccessToken}'",
                $"Credential access token: '{credAccessToken}'",
                $"Pass: {pass}"
            }));
        }
コード例 #22
0
ファイル: EnterpriseClient.cs プロジェクト: quanticPI/NixMDM
        public async Task <string> GetSignupUrl(IGoogleAuthProvider authProvider)
        {
            GoogleCredential cred = await authProvider.GetCredentialAsync();

            var service = new AndroidManagementService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });
            var createsignupUrlReq = service.SignupUrls.Create();

            createsignupUrlReq.ProjectId   = "nixmdm";
            createsignupUrlReq.CallbackUrl = "https://localhost:5001";
            SignupUrl signupUrl = await createsignupUrlReq.ExecuteAsync();

            return(signupUrl.Url);
        }
コード例 #23
0
        public async Task <IActionResult> ForceTokenRefresh([FromServices] IGoogleAuthProvider auth)
        {
            var authResult0 = await HttpContext.AuthenticateAsync();

            var accessToken0  = authResult0.Properties.GetTokenValue(OpenIdConnectParameterNames.AccessToken);
            var refreshToken0 = authResult0.Properties.GetTokenValue(OpenIdConnectParameterNames.RefreshToken);
            var issuedUtc0    = authResult0.Properties.IssuedUtc?.ToString() ?? "<missing>";
            var expiresUtc0   = authResult0.Properties.ExpiresUtc?.ToString() ?? "<missing>";

            // Force token refresh by specifying a too-long refresh window.
            var cred = await auth.GetCredentialAsync(TimeSpan.FromHours(24));

            var authResult1 = await HttpContext.AuthenticateAsync();

            var accessToken1  = authResult1.Properties.GetTokenValue(OpenIdConnectParameterNames.AccessToken);
            var refreshToken1 = authResult1.Properties.GetTokenValue(OpenIdConnectParameterNames.RefreshToken);
            var issuedUtc1    = authResult1.Properties.IssuedUtc?.ToString() ?? "<missing>";
            var expiresUtc1   = authResult1.Properties.ExpiresUtc?.ToString() ?? "<missing>";

            var credAccessToken = await cred.UnderlyingCredential.GetAccessTokenForRequestAsync();

            var accessTokenChanged        = accessToken0 != accessToken1;
            var credHasCorrectAccessToken = credAccessToken == accessToken1;

            var pass = accessTokenChanged && credHasCorrectAccessToken;

            var model = new ForceTokenRefreshModel
            {
                Results = new[]
                {
                    $"Before Access Token: '{accessToken0}'",
                    $"Before Refresh Token: '{refreshToken0}'",
                    $"Before Issued UTC: '{issuedUtc0}'",
                    $"Before Expires UTC: '{expiresUtc0}'",
                    $"After Access Token: '{accessToken1}'",
                    $"After Refresh Token: '{refreshToken1}'",
                    $"After Issued UTC: '{issuedUtc1}'",
                    $"After Expires UTC: '{expiresUtc1}'",
                    $"Access token changed: {accessTokenChanged}",
                    $"Credential has correct access token: {credHasCorrectAccessToken}",
                    $"Pass: {pass}"
                },
                AccessToken = accessToken1
            };

            return(View(model));
        }
コード例 #24
0
ファイル: EmailController.cs プロジェクト: Morr0/EmailSender
        public async Task <IActionResult> Send([FromForm] SendEmailRequest request, [FromServices] IGoogleAuthProvider auth)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", new List <Destination>(_emailsService.Get())));
            }

            var credentials = await auth.GetCredentialAsync().ConfigureAwait(false);

            var gmailService = new GmailService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credentials,
                ApplicationName       = "EmailSender"
            });

            var destinations = _emailsService.Get();
            int sections     = (destinations.Count / 5) + 1;
            var tasks        = new List <Task>(5);

            for (int i = 0; i < sections; i++)
            {
                var currFive = destinations.Skip(i * 5).Take(5);
                tasks.Clear();

                foreach (var destination in currFive)
                {
                    string body    = request.Template.Replace("{0}", destination.Name);
                    var    message = new Message
                    {
                        Raw = EmailMessageCreator.Message(destination.Name, destination.Email, request.Subject, body)
                    };

                    var compose = new UsersResource.MessagesResource.SendRequest(gmailService, message, "me");
                    tasks.Add(compose.ExecuteAsync());
                }

                await Task.WhenAny(tasks).ConfigureAwait(false);

                await Task.Delay(1000).ConfigureAwait(false);
            }

            _emailsService.RemoveAll();

            return(Redirect("/"));
        }
コード例 #25
0
        public ExternalGrantValidator(
            IFacebookAuthProvider facebookAuthProvider,
            IGoogleAuthProvider googleAuthProvider,
            IAppleAuthProvider appleAuthProvider,
            IUserProcessor userProcessorr)
        {
            _facebookAuthProvider = facebookAuthProvider;
            _googleAuthProvider   = googleAuthProvider;
            _appleAuthProvider    = appleAuthProvider;
            _userProcessor        = userProcessorr;

            _providers = new Dictionary <ProviderType, IExternalAuthProvider>
            {
                { ProviderType.Facebook, _facebookAuthProvider },
                { ProviderType.Google, _googleAuthProvider },
                { ProviderType.Apple, _appleAuthProvider },
            };
        }
コード例 #26
0
        public ActionResult EditAssignment(string courseWorkId,
                                           string CourseId,
                                           [FromServices] IGoogleAuthProvider auth)
        {
            var course = this.GetGoogleClassRoomService(auth)
                         .Courses.CourseWork.Get(CourseId, courseWorkId)
                         .Execute();

            Models.CourseWork CourseWork = new Models.CourseWork()
            {
                CourseWorkId = courseWorkId,
                CourseId     = CourseId,
                Title        = course.Title,
                Description  = course.Description,
            };

            return(View(CourseWork));
        }
コード例 #27
0
        public ActionResult CreateCourse(IFormCollection collection,
                                         [FromServices] IGoogleAuthProvider auth)
        {
            string name    = collection["Name"];
            string room    = collection["Room"];
            string section = collection["Section"];

            Link link = new Link()
            {
                Url = "https://webpack.js.org/loaders/css-loader/#sourcemap"
            };
            List <CourseMaterial> materials = new List <CourseMaterial>()
            {
                new CourseMaterial()
                {
                    Link = link
                }
            };
            List <CourseMaterialSet> materialSets = new List <CourseMaterialSet>()
            {
                new CourseMaterialSet()
                {
                    Materials = materials
                }
            };

            Course course = new Course()
            {
                Name               = name,
                Section            = section,
                Room               = room,
                CourseState        = "ACTIVE",
                CourseMaterialSets = materialSets,
                OwnerId            = "me"
            };

            var request = this.GetGoogleClassRoomService(auth).Courses.Create(course);

            request.Execute();

            return(RedirectToAction(nameof(Index)));
        }
コード例 #28
0
        public ActionResult Index([FromServices] IGoogleAuthProvider auth)
        {
            var    myCources = new List <Course>();
            string pageToken = null;

            do
            {
                var request = this.GetGoogleClassRoomService(auth).Courses.List();
                request.PageSize  = 100;
                request.PageToken = pageToken;
                request.StudentId = "me";
                var response = request.Execute();
                myCources.AddRange(response.Courses);
                pageToken = response.NextPageToken;
            } while (pageToken != null);

            List <Models.Course> CourseList = new List <Models.Course>();

            if (myCources.Count > 0)
            {
                foreach (Course item in myCources)
                {
                    if (item.CourseState == "ACTIVE")
                    {
                        CourseList.Add(
                            new Models.Course()
                        {
                            Id                = item.Id,
                            Name              = item.Name,
                            Room              = item.Room,
                            Section           = item.Section,
                            AlternateLink     = item.AlternateLink,
                            CourseGroupEmail  = item.CourseGroupEmail,
                            TeacherGroupEmail = item.TeacherGroupEmail
                        });
                    }
                }
            }
            return(View(CourseList));
        }
コード例 #29
0
        public ActionResult GetCourseWorks(string courseId,
                                           string className,
                                           [FromServices] IGoogleAuthProvider auth)
        {
            var classRoomService = this.GetGoogleClassRoomService(auth);

            var    courseWorks = new List <CourseWork>();
            string pageToken   = null;

            do
            {
                var request = classRoomService.Courses.CourseWork.List(courseId);
                request.PageSize  = 30;
                request.PageToken = pageToken;
                var response = request.Execute();
                if (response.CourseWork != null)
                {
                    courseWorks.AddRange(response.CourseWork);
                }
            } while (pageToken != null);

            List <Models.CourseWork> CourseWorkList = new List <Models.CourseWork>();

            foreach (CourseWork item in courseWorks)
            {
                CourseWorkList.Add(
                    new Models.CourseWork()
                {
                    CourseWorkId = item.Id,
                    CourseId     = courseId,
                    Type         = "Assigmment",
                    Title        = item.Title,
                    Description  = item.Description,
                });
            }
            ViewData["ClassName"] = className;
            ViewData["CourseId"]  = courseId;
            return(View(CourseWorkList));
        }
コード例 #30
0
        public async Task <IActionResult> AnalyticsListing([FromServices] IGoogleAuthProvider auth)
        {
            var cred = await auth.GetCredentialAsync();

            var service = new AnalyticsService(new BaseClientService.Initializer
            {
                HttpClientInitializer = cred
            });

            var thing = await auth.GetCurrentScopesAsync();

            var accounts = await service.Management.Accounts.List().ExecuteAsync();

            var account = accounts.Items.First();


            var accountId = "118875512";

            // var properties = await service.Management.Webproperties.List(accountId).ExecuteAsync();

            //var propertyId = "UA-118875512-1";


            var filters = await service.Management.Filters.List(accountId).ExecuteAsync();

            var matchingFilter = filters.Items.First();

            matchingFilter.ExcludeDetails.ExpressionValue = "8.8.8.8";

            // service.Management.Filters.Update(matchingFilter, accountId, matchingFilter.Id).Execute();

            //filter.ExcludeDetails.Field = "GEO_IP_ADDRESS";
            //filter.

            var accountNames = accounts.Items.Select(x => x.Name).ToList();

            return(View(accountNames));
        }