public virtual int GetComprehensionScore(MembershipRule rule, Auth0User user)
        {
            if (user == null)
            {
                return(0);
            }
            var memberLink =
                user.MemberAuth0Users
                .SingleOrDefault(
                    m => m.Member.OrganisationId == rule.MembershipRuleSection.ShurahBasedOrganisationId);
            var users = new List <Auth0User> {
                user
            };

            if (memberLink != null)
            {
                users.AddRange(memberLink.Member.MemberAuth0Users.Select(m => m.Auth0User));
            }
            return(users.SelectMany(u => u.MembershipRuleComprehensionTestResults)
                   .Where(t => t.MembershipRuleComprehensionQuestion.MembershipRuleId == rule.Id)
                   .Where(t => t.CorrectlyAnswered)
                   .Where(t => t.AnsweredDateTimeUtc > rule.PublishedDateTimeUtc)
                   .GroupBy(x => x.MembershipRuleComprehensionQuestionId).Count());


            //var correctAnswers=_dependencies.StorageService.SetOf<MembershipRuleComprehensionTestResult>()
            //    .Where(r => r.MembershipRuleComprehensionQuestion.MembershipRuleId == rule.Id
            //                && ids.Contains(r.Auuth0UserId)
            //                && r.CorrectlyAnswered
            //                && r.StartedDateTimeUtc>rule.PublishedDateTimeUtc)
            //                .GroupBy(x=>x.MembershipRuleComprehensionQuestionId).Count();
            //return correctAnswers;
        }
                    public void PropertiesAreCorrectlyBuiltForTheRule()
                    {
                        MethodToTest(() => service.BuildMembershipRuleResource(A <string> .Ignored,
                                                                               A <Auth0User> .Ignored, A <MembershipRule> .Ignored, A <int> .Ignored, A <IEnumerable <MembershipRuleTermDefinition> > .Ignored));

                        var prefix = "1.2.3.";
                        var index  = 7;
                        var rule   = new MembershipRule
                        {
                            RuleStatement = "some statement",
                            Id            = 67,
                            //       Explanation = new MembershipRuleExplanation { ExplanationUrl = "someurl"},
                            MembershipRuleComprehensionQuestions = new List <MembershipRuleComprehensionQuestion>(),
                            PublishedDateTimeUtc = DateTime.UtcNow
                        };
                        var user      = new Auth0User();
                        var fragments = new List <TextFragmentResource>();
                        var terms     = new List <MembershipRuleTermDefinition>();

                        A.CallTo(() => service.ParseRuleStatement(rule.RuleStatement, terms)).Returns(fragments);
                        A.CallTo(() => service.GetComprehensionScore(rule, user)).Returns(15);
                        A.CallTo(() => dependencies.LinqService.EnumerableCount(
                                     rule.MembershipRuleComprehensionQuestions)).Returns(20);

                        var result = service.BuildMembershipRuleResource(prefix, user, rule, index, terms);

                        Assert.AreEqual(prefix + (index + 1), result.Number);
                        Assert.AreEqual(rule.Id, result.Id);
                        Assert.AreSame(fragments, result.RuleFragments);
                        //       Assert.AreEqual(rule.Explanation.ExplanationUrl,result.ExplanationUrl);
                        Assert.AreEqual(15, result.ComprehensionScore);
                        Assert.AreEqual(20, result.MaxComprehensionScore);
                        Assert.AreEqual(rule.PublishedDateTimeUtc.ToString("s"), result.PublishedUtcDateTimeText);
                        Assert.AreEqual(rule.RuleStatement, result.RuleStatement);
                    }
            public void UserIsVerifiedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var user = new Auth0User {
                    Id = "someId"
                };
                var auth0Profile = new Auth0UserProfile {
                    sub = user.Id
                };
                var auth0UserSet = new FakeDbSet <Auth0User> {
                    user
                };

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);



                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
            }
        public void ReturnsTheSingleMatchingUser()
        {
            MethodToTest(() => service.GetAuthenticatedUser(A <IPrincipal> .Ignored));

            var claimsIdentity = new ClaimsIdentity();
            var principal      = A.Fake <IPrincipal>();

            A.CallTo(() => principal.Identity).Returns(claimsIdentity);
            var userId = "someUserId";

            A.CallTo(() => service.GetLoggedInUserId(claimsIdentity)).Returns(userId);
            var users = A.Fake <IDbSet <Auth0User> >();

            A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(users);
            var user = new Auth0User();

            A.CallTo(() => dependencies.LinqService.SingleOrDefault(users,
                                                                    A <Expression <Func <Auth0User, bool> > > .That.Matches(x =>
                                                                                                                            x.Compile().Invoke(new Auth0User {
                Id = userId
            }) &&
                                                                                                                            !x.Compile().Invoke(new Auth0User {
                Id = userId + "x"
            })
                                                                                                                            ))).Returns(user);

            var result = service.GetAuthenticatedUser(principal);

            Assert.AreSame(user, result);
        }
            public void NewUserProfileIsAddedAndResourceReturned()
            {
                MethodToTest(() => service.GetUserProfile(A <Auth0UserProfile> .Ignored, A <IPrincipal> .Ignored));

                var auth0Profile = new Auth0UserProfile();
                var auth0UserSet = new FakeDbSet <Auth0User>();

                A.CallTo(() => dependencies.StorageService.SetOf <Auth0User>()).Returns(auth0UserSet);
                var user = new Auth0User();

                A.CallTo(() => service.BuildAuth0User(auth0Profile)).Returns(user);
                var claimsIdentity = new ClaimsIdentity();
                var resource       = new UserProfileResource();

                A.CallTo(() => service.BuildUserProfileResource(user)).Returns(resource);
                var principal = A.Fake <IPrincipal>();

                A.CallTo(() => principal.Identity).Returns(claimsIdentity);

                var result = service.GetUserProfile(auth0Profile, principal);

                Assert.AreSame(resource, result);
                A.CallTo(() => service.VerifyProfile(auth0Profile, claimsIdentity)).MustHaveHappened();
                Assert.AreEqual(1, auth0UserSet.Count());
                Assert.AreSame(user, auth0UserSet.First());
                A.CallTo(() => dependencies.StorageService.SaveChanges()).MustHaveHappened();
            }
示例#6
0
        public async Task <bool> Authenticate()
        {
            var cached = _tokenCache.GetUser();

            if (cached == null)
            {
                var authClient = new Auth0Client(Domain, ClientId);
                var result     =
                    await
                    authClient.LoginAsync()
                    .ContinueWith(t => t.Result, TaskScheduler.FromCurrentSynchronizationContext());

                if (result == null)
                {
                    return(false);
                }

                AuthenticatedUser = result;
                _tokenCache.StoreUser(result);
            }
            else
            {
                AuthenticatedUser = cached;
            }

            return(true);
        }
        public void ReturnsTheSingleOrganisationWithoutAParentOrganisation()
        {
            MethodToTest(() => service.GetOrganisation(A <IPrincipal> .Ignored, A <int> .Ignored));

            var organisationId = 2;
            var principal      = A.Fake <IPrincipal>();
            var user           = new Auth0User();

            A.CallTo(() => dependencies.UserService.GetAuthenticatedUser(principal)).Returns(user);
            var org  = new ShurahBasedOrganisation();
            var orgs = A.Fake <IDbSet <ShurahBasedOrganisation> >();

            A.CallTo(() => dependencies.StorageService.SetOf <ShurahBasedOrganisation>()).Returns(orgs);
            A.CallTo(() => dependencies.LinqService.Single(orgs,
                                                           A <Expression <Func <ShurahBasedOrganisation, bool> > > .That.Matches(x =>
                                                                                                                                 x.Compile().Invoke(new ShurahBasedOrganisation
            {
                Id = organisationId
            }) &&
                                                                                                                                 !x.Compile().Invoke(new ShurahBasedOrganisation
            {
                Id = organisationId + 1
            })
                                                                                                                                 ))).Returns(org);
            var organisationResource = new OrganisationResource();

            A.CallTo(() => service.BuildOrganisationResource(org, user)).Returns(organisationResource);

            var result = service.GetOrganisation(principal, organisationId);

            Assert.AreSame(organisationResource, result);
        }
 public virtual List <string> GetMemberPermissions(Auth0User user, MembershipRuleSection section)
 {
     if (section == null)
     {
         return(new List <string>());
     }
     return(GetMemberPermissions(user, section.ShurahBasedOrganisation));
 }
 public List <string> GetMemberPermissions(Auth0User user, MembershipRule rule)
 {
     if (rule == null)
     {
         return(new List <string>());
     }
     return(GetMemberPermissions(user, rule.MembershipRuleSection));
 }
示例#10
0
 public virtual UserProfileResource BuildUserProfileResource(Auth0User user)
 {
     return(new UserProfileResource
     {
         Name = user.Name,
         PictureUrl = user.PictureUrl,
         UserId = user.Id
     });
 }
        public virtual Auth0User BuildAuth0User(Auth0UserProfile auth0Profile)
        {
            var user = new Auth0User();

            user.Id         = auth0Profile.sub;
            user.PictureUrl = auth0Profile.Picture;
            user.Name       = auth0Profile.Name;
            return(user);
        }
        public static string EncodeAuthUser(Auth0User cacheKey)
        {
            var keyElements = new SortedDictionary <TokenElement, string>();

            keyElements[TokenElement.Auth0AccessToken] = cacheKey.Auth0AccessToken;
            keyElements[TokenElement.IdToken]          = cacheKey.IdToken;
            keyElements[TokenElement.Profile]          = JsonConvert.SerializeObject(cacheKey.Profile);

            return(CreateKeyFromElements(keyElements));
        }
        public void GuaranteeUserHasPermission(Auth0User user, ShurahBasedOrganisation organisation,
                                               ShurahOrganisationPermission permission)
        {
            var permissions = GetMemberPermissions(user, organisation);

            if (!permissions.Contains(permission.ToString()))
            {
                throw new Exception("Access Denied");
            }
        }
        public virtual bool HasAPendingApplication(MemberResource member, Auth0User user, ShurahBasedOrganisation organisation)
        {
            if (member != null)
            {
                return(false);
            }
            var existingApplication =
                user?.MembershipApplications.FirstOrDefault(a => a.OrganisationId == organisation.Id);

            return(existingApplication != null);
        }
示例#15
0
 public void Map(Auth0User auth)
 {
     Nickname      = auth.nickname;
     Picture       = auth.picture;
     Email         = auth.email;
     EmailVerified = auth.email_verified;
     GivenName     = auth.given_name;
     FamilyName    = auth.family_name;
     Name          = auth.name;
     LoginID       = auth.user_id;
 }
        public static UserModel MapFreeUser(this Auth0User x)
        {
            var model = new UserModel
            {
                Email      = x.email,
                FirstName  = x.given_name,
                LastName   = x.family_name,
                PictureUrl = x.picture
            };

            return(model);
        }
示例#17
0
        public async Task BeginLoginAsync()
        {
            _currentUser = await _client.LoginAsync("Username-Password-Authentication", Username, Password);

            if (_currentUser != null)
            {
                _status.OnNext(ClientConnectionStatus.Connected);
            }
            else
            {
                _status.OnNext(ClientConnectionStatus.Disconnected);
            }
        }
        public virtual MemberResource GetMember(Auth0User user, IEnumerable <Member> members)
        {
            if (user == null)
            {
                return(null);
            }
            var member = _dependencies.LinqService.SingleOrDefault(members, m => m.MemberAuth0Users.Any(x => x.Auth0UserId == user.Id));

            if (member == null || member.Removed)
            {
                return(null);
            }
            return(BuildMemberResource(member));
        }
示例#19
0
        private void ShowResult(Auth0User user)
        {
            var id           = user.IdToken;
            var profile      = user.Profile.ToString();
            var refreshToken = string.IsNullOrEmpty(user.RefreshToken)
                                ? "Not requested. Use withRefreshToken: true when calling LoginAsync."
                                : user.RefreshToken;

            var truncatedId = id.Remove(0, 20);

            truncatedId = truncatedId.Insert(0, "...");

            SetResultText(string.Format("Id: {0}\r\n\r\nProfile: {1}\r\n\r\nRefresh Token:\r\n{2}",
                                        truncatedId, profile, refreshToken));
        }
            public void PropertiesAreSetCorrectly()
            {
                MethodToTest(() => service.BuildUserProfileResource(A <Auth0User> .Ignored));

                var user = new Auth0User
                {
                    Name = "a"
                };

                var result = service.BuildUserProfileResource(user);

                Assert.AreEqual(user.Name, result.Name);
                Assert.AreEqual(user.PictureUrl, result.PictureUrl);
                Assert.AreEqual(user.Id, result.UserId);
            }
示例#21
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _nicknameLabelBinding = this.SetBinding(
                () => Vm.Nickname,
                () => nickname.Text);

            _emailLabelBinding = this.SetBinding(
                () => Vm.Email,
                () => email.Text);

            loginButton.TouchUpInside += async(sender, e) => {
                Auth0User user = null;
                try {
                    user = await _auth0.LoginAsync(this, scope : "openid profile");
                } catch (OperationCanceledException opEx) {
                    Insights.Report(opEx);
                }

                if (user != null)
                {
                    var emailAddress  = user.Profile.GetValue("email").ToString();
                    var nicknameValue = user.Profile.GetValue("nickname").ToString();
                    Insights.Identify(emailAddress, null);
                    Insights.Identify(null, Insights.Traits.Email, emailAddress);
                    Insights.Identify(null, Insights.Traits.Name, nicknameValue);

                    Vm.Nickname = nicknameValue;
                    Vm.Email    = emailAddress;

                    _settingsService.UserIdToken  = user.IdToken;
                    _settingsService.EmailAddress = emailAddress;
                    _settingsService.Nickname     = nicknameValue;

                    //AppDelegate.RegisterForRemoteNotifications(null);
                    var pushSettings = UIUserNotificationSettings.GetSettingsForTypes(
                        UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
                        new NSSet());

                    UIApplication.SharedApplication.RegisterUserNotificationSettings(pushSettings);
                    UIApplication.SharedApplication.RegisterForRemoteNotifications();

                    Messenger.Default.Send(new UserLoggedInMessage());
                }
            };
        }
            public void PropertiesAerBuiltCorrectly()
            {
                MethodToTest(() => service.BuildOrganisationResource(A <ShurahBasedOrganisation> .Ignored, A <Auth0User> .Ignored));

                var user = new Auth0User
                {
                };
                var org = new ShurahBasedOrganisation
                {
                    Name                   = "a",
                    Description            = "B",
                    JoiningPolicy          = JoiningPolicy.NoApplicationNeeded,
                    Members                = new List <Member>(),
                    MembershipRuleSections = new List <MembershipRuleSection>(),
                    Terms                  = new List <MembershipRuleTermDefinition>(),
                };
                var sortedTerms = new List <MembershipRuleTermDefinition>();

                A.CallTo(() => service.SortTerms(org.Terms)).Returns(sortedTerms);
                var memberResource = new MemberResource();

                A.CallTo(() => service.GetMember(user, org.Members)).Returns(memberResource);
                var ruleSectionResources = new List <MembershipRuleSectionResource>();
                var filteredSections     = new List <MembershipRuleSection>();

                A.CallTo(() => dependencies.LinqService.Where(org.MembershipRuleSections,
                                                              A <Func <MembershipRuleSection, bool> > .That.Matches(x =>
                                                                                                                    x.Invoke(new MembershipRuleSection())
                                                                                                                    &&
                                                                                                                    !x.Invoke(new MembershipRuleSection
                {
                    ParentMembershipRuleSection = new MembershipRuleSectionRelationship()
                })
                                                                                                                    ))).Returns(filteredSections);

                A.CallTo(() => service.BuildMembershipRuleSectionResources(String.Empty, filteredSections, sortedTerms, user))
                .Returns(ruleSectionResources);

                var result = service.BuildOrganisationResource(org, user);

                Assert.AreEqual(org.Name, result.Name);
                Assert.AreEqual(org.Description, result.Description);
                Assert.AreEqual(org.JoiningPolicy.ToString(), result.JoiningPolicy);
                Assert.AreEqual(memberResource, result.Member);
                Assert.AreSame(ruleSectionResources, result.RuleSections);
            }
        public static Auth0User DecodeAuthUser(string cacheKey)
        {
            var elements = new Auth0User();
            IDictionary <TokenElement, string> elementDictionary = Decode(cacheKey);

            elements.Auth0AccessToken = elementDictionary.ContainsKey(TokenElement.Auth0AccessToken)
                ? elementDictionary[TokenElement.Auth0AccessToken]
                : null;

            elements.IdToken = elementDictionary.ContainsKey(TokenElement.IdToken)
                ? elementDictionary[TokenElement.IdToken]
                : null;

            elements.Profile = elementDictionary.ContainsKey(TokenElement.Profile)
                ? JsonConvert.DeserializeObject <JObject>(elementDictionary[TokenElement.Profile])
                : null;

            return(elements);
        }
                public void BuildsResourcesPerSection()
                {
                    MethodToTest(() => service.BuildMembershipRuleSectionResources(A <string> .Ignored,
                                                                                   A <IEnumerable <MembershipRuleSection> > .Ignored,
                                                                                   A <IEnumerable <MembershipRuleTermDefinition> > .Ignored, A <Auth0User> .Ignored));

                    var sectionPrefix = "pre";
                    var user          = new Auth0User();
                    var org           = new ShurahBasedOrganisation
                    {
                        MembershipRuleSections = new List <MembershipRuleSection>(),
                        Terms = new List <MembershipRuleTermDefinition>()
                    };
                    var exampleIndex   = 3;
                    var exampleSection = new MembershipRuleSection();
                    var exampleMembershipRuleSectionResource = new MembershipRuleSectionResource();

                    A.CallTo(() => service.BuildMembershipRuleSectionResource(sectionPrefix, exampleSection, user, exampleIndex, org.Terms))
                    .Returns(exampleMembershipRuleSectionResource);
                    var orderedSections = A.Fake <IOrderedEnumerable <MembershipRuleSection> >();

                    A.CallTo(() => dependencies.LinqService.OrderBy(org.MembershipRuleSections,
                                                                    A <Func <MembershipRuleSection, int> > .That.Matches(x =>
                                                                                                                         x.Invoke(new MembershipRuleSection {
                        Sequence = 4
                    }) == 4
                                                                                                                         ))).Returns(orderedSections);
                    var resources = new List <MembershipRuleSectionResource>();

                    A.CallTo(() => dependencies.LinqService.SelectIndexedEnumerable(orderedSections,
                                                                                    A <Func <MembershipRuleSection, int, MembershipRuleSectionResource> > .That.Matches(x =>
                                                                                                                                                                        x.Invoke(exampleSection, exampleIndex) == exampleMembershipRuleSectionResource
                                                                                                                                                                        ))).Returns(resources);
                    var resourcesList = new List <MembershipRuleSectionResource>();

                    A.CallTo(() => dependencies.LinqService.EnumerableToList(resources)).Returns(resourcesList);



                    var result = service.BuildMembershipRuleSectionResources(sectionPrefix, org.MembershipRuleSections, org.Terms, user);

                    Assert.AreSame(resourcesList, result);
                }
                    public void MemberReturned()
                    {
                        MethodToTest(() => service.GetMember(A <Auth0User> .Ignored, A <IEnumerable <Member> > .Ignored));

                        var members = new List <Member>();
                        var user    = new Auth0User {
                            Id = "someid"
                        };

                        var exampleMatchingMember = new Member
                        {
                            MemberAuth0Users = new List <MemberAuth0User>
                            {
                                new MemberAuth0User {
                                    Auth0UserId = user.Id
                                }
                            }
                        };
                        var exampleNonMatchingMember = new Member
                        {
                            MemberAuth0Users = new List <MemberAuth0User>
                            {
                                new MemberAuth0User {
                                    Auth0User = new Auth0User()
                                }
                            }
                        };
                        var member = new Member();

                        A.CallTo(() => dependencies.LinqService.SingleOrDefault(members,
                                                                                A <Func <Member, bool> > .That.Matches(x =>
                                                                                                                       x.Invoke(exampleMatchingMember) &&
                                                                                                                       !x.Invoke(exampleNonMatchingMember)
                                                                                                                       ))).Returns(member);
                        var memberResource = new MemberResource();

                        A.CallTo(() => service.BuildMemberResource(member)).Returns(memberResource);

                        var result = service.GetMember(user, members);

                        Assert.AreSame(memberResource, result);
                    }
示例#26
0
        //var loginWithWidgetAndRefreshToken = this.FindViewById<Button>(Resource.Id.loginWithWidgetAndRefreshToken);

        //loginWithWidgetAndRefreshToken.Click += async (s, a) => {
        //    // This will show all connections enabled in Auth0, and let the user choose the identity provider
        //    try
        //    {
        //        var user = await this.client.LoginAsync(this, withRefreshToken: true);
        //        this.ShowResult(user);
        //    }
        //    catch (AggregateException e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Flatten().Message;
        //    }
        //    catch (Exception e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Message;
        //    }
        //};

        //var loginWithConnection = this.FindViewById<Button>(Resource.Id.loginWithConnection);
        //    loginWithConnection.Click += async (s, a) => {
        //        // This uses a specific connection: google-oauth2
        //        try
        //        {
        //            var user = await this.client.LoginAsync(this, "google-oauth2"); // current context and connection name
        //            this.ShowResult(user);
        //        }
        //        catch (AggregateException e)
        //        {
        //            this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Flatten().Message;
        //        }
        //        catch (Exception e)
        //        {
        //            this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Message;
        //        }

        //    };

        //var loginWithUserPassword = this.FindViewById<Button>(Resource.Id.loginWithUserPassword);

        //loginWithUserPassword.Click += async (s, a) => {
        //    this.progressDialog.Show();

        //    var userName = this.FindViewById<EditText>(Resource.Id.txtUserName).Text;
        //    var password = this.FindViewById<EditText>(Resource.Id.txtUserPassword).Text;
        //    // This uses a specific connection (named sql-azure-database in Auth0 dashboard) which supports username/password authentication
        //    try
        //    {
        //        var user = await this.client.LoginAsync("sql-azure-database", userName, password);
        //        this.ShowResult(user);
        //    }
        //    catch (AggregateException e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Flatten().Message;
        //    }
        //    catch (Exception e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Message;
        //    }
        //    finally
        //    {
        //        if (this.progressDialog.IsShowing)
        //        {
        //            this.progressDialog.Hide();
        //        }
        //    }
        //};

        //var refreshWithIdToken = this.FindViewById<Button>(Resource.Id.refreshWithIdToken);
        //refreshWithIdToken.Click += async (s, a) => {
        //    this.progressDialog.Show();

        //    try
        //    {
        //        await this.client.RenewIdToken();
        //        this.ShowResult(this.client.CurrentUser);
        //    }
        //    catch (AggregateException e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Flatten().Message;
        //    }
        //    catch (Exception e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Message;
        //    }
        //    finally
        //    {
        //        if (this.progressDialog.IsShowing)
        //        {
        //            this.progressDialog.Hide();
        //        }
        //    }
        //};

        //var refreshWithRefreshToken = this.FindViewById<Button>(Resource.Id.refreshWithRefreshToken);
        //refreshWithRefreshToken.Click += async (s, a) => {
        //    this.progressDialog.Show();

        //    try
        //    {
        //        await this.client.RefreshToken();
        //        this.ShowResult(this.client.CurrentUser);
        //    }
        //    catch (AggregateException e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Flatten().Message;
        //    }
        //    catch (Exception e)
        //    {
        //        this.FindViewById<TextView>(Resource.Id.txtResult).Text = e.Message;
        //    }
        //    finally
        //    {
        //        if (this.progressDialog.IsShowing)
        //        {
        //            this.progressDialog.Hide();
        //        }
        //    }
        //};



        private void ShowResult(Auth0User user)
        {
            var id           = user.IdToken;
            var profile      = user.Profile.ToString();
            var refreshToken = string.IsNullOrEmpty(user.RefreshToken)
                ? "Not requested. Use withRefreshToken: true when calling LoginAsync."
                : user.RefreshToken;

            var truncatedId = id.Remove(0, 20);

            truncatedId = truncatedId.Insert(0, "...");

            //this.FindViewById<TextView>(Resource.Id.txtResult).Text = string.Format(
            //        "Id: {0}\r\n\r\nProfile: {1}\r\n\r\nRefresh Token:\r\n{2}",
            //        truncatedId,
            //        profile,
            //        refreshToken);


            StartActivity(typeof(MainActivity));
        }
示例#27
0
        public static User CreateUser(Auth0User auth0User, int referralId)
        {
            var user = new User
            {
                UserIdentity = new UserIdentity
                {
                    Auth0Id       = auth0User.Auth0Id,
                    Auth0Nickname = auth0User.Auth0Nickname,
                    Username      = auth0User.Auth0Nickname
                },
                Username     = auth0User.Auth0Nickname,
                UserWallet   = new UserWallet(),
                UserStat     = new UserStat(),
                UserReferral = new UserReferral {
                    ReferralId = referralId
                },
                CreationTime = DateTime.Now
            };

            return(user);
        }
        public virtual List <string> GetMemberPermissions(Auth0User user, ShurahBasedOrganisation organisation)
        {
            if (user == null || organisation == null)
            {
                return(new List <string>());
            }
            var memberAuthUser = user.MemberAuth0Users.FirstOrDefault(m => m.Member.OrganisationId == organisation.Id && !m.Member.Removed);

            if (memberAuthUser == null)
            {
                return(new List <string>());
            }
            var permissions = memberAuthUser.Member.DelegatedPermissions.Select(x => x.ShurahOrganisationPermission).Distinct();

            if (organisation.OrganisationLeader != null &&
                organisation.OrganisationLeader.LeaderMemberId == memberAuthUser.MemberId)
            {
                permissions = Enum.GetValues(typeof(ShurahOrganisationPermission)).OfType <ShurahOrganisationPermission>().ToList();
            }
            return(permissions.Select(p => p.ToString()).ToList());
        }
示例#29
0
        public async Task <FullUser> RegisterNewUser([FromBody] Auth0User auth0User)
        {
            if (auth0User == null)
            {
                throw new ArgumentNullException();
            }

            var existingUserIdentity = await _dbContext.Auth0Query(auth0User.Auth0Id).Select(u => u.UserIdentity).FirstOrDefaultAsync();

            if (existingUserIdentity?.Auth0Id == auth0User.Auth0Id)
            {
                var user       = _dbContext.User.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId);
                var userWallet = _dbContext.UserWallet.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId);
                var userStat   = _dbContext.UserStat.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId);
                return(BitcornUtils.GetFullUser(user, existingUserIdentity, userWallet, userStat));
            }

            try
            {
                var user = new User
                {
                    UserIdentity = new UserIdentity
                    {
                        Auth0Id = auth0User.Auth0Id, Auth0Nickname = auth0User.Auth0Nickname
                    },
                    UserWallet = new UserWallet(),
                    UserStat   = new UserStat()
                };
                _dbContext.User.Add(user);
                await _dbContext.SaveAsync();

                return(BitcornUtils.GetFullUser(user, user.UserIdentity, user.UserWallet, user.UserStat));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        public void StoreUser(Auth0User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            var credential = GetFromVault(user.Profile["email"].ToString());

            if (credential != null)
            {
                _vault.Remove(credential);
            }

            var newCred = new PasswordCredential
            {
                UserName = user.Profile["email"].ToString(),
                Password = CacheHelpers.EncodeAuthUser(user),
                Resource = Resource
            };

            _vault.Add(newCred);
        }