Ejemplo n.º 1
0
        public async Task <Models.Community> Post([FromBody] Models.Community community)
        {
            User.EnsureCommunityAdmin(community.handle);

            using (var transaction = _dbContext.Database.BeginTransaction())
            {
                var orgOCUrl = _dbContext.Communities.AsNoTracking().Single(c => c.handle == community.handle).OCUrl;


                var attached = _dbContext.Communities.Attach(community);
                attached.State = EntityState.Modified;
                attached.Property(c => c.OCUrl).IsModified = false;


                await _dbContext.SaveChangesAsync();

                var ocs = new OpenChainServer(orgOCUrl);
                using (var ad = ocs.Login(TokenController.OCAdminpassPhrase))
                {
                    await updateLedgerInfo(ad, community);
                }

                transaction.Commit();
                return(community);
            }
        }
Ejemplo n.º 2
0
        public async Task <Models.User> Post([FromBody] Models.updateUserRequest req)
        {
            using (var transaction = _dbContext.Database.BeginTransaction())
            {
                _dbContext.Users.Add(req.user);
                await _dbContext.SaveChangesAsync();

                var community = _dbContext.Communities.Single(c => c.handle == req.user.communityHandle);

                await TokenController.TransactionVerifier(CommunityController.getUserPath(req.user.handle),
                                                          req.transaction, $"{community.OCUrl}");

                transaction.Commit();
            }


            return(req.user);
        }
Ejemplo n.º 3
0
        public async Task <dynamic> Reset(String Community, String email)
        {
            if (Community == CommunityController.UNKNOWN_COMMUNITY)
            {
                //ensure unknowns community exists
                var unknown = _dbContext.Communities.SingleOrDefault(c => c.handle == Community);
                if (null == unknown)
                {
                    unknown = new Models.Community
                    {
                        full_name   = "not used unknown community",
                        description = "used to initial signin for community creaters",
                        handle      = Community,
                        OCUrl       = "notusednodb"
                    };
                    _dbContext.Communities.Add(unknown);
                    await _dbContext.SaveChangesAsync();
                }
            }

            var user = _dbContext.Users.Include(u => u.community).
                       SingleOrDefault(u => u.communityHandle == Community && u.email == email);

            if (null == user)
            {
                if (Community == CommunityController.UNKNOWN_COMMUNITY)
                {
                    user = new Models.User
                    {
                        address         = "unknown address",
                        communityHandle = CommunityController.UNKNOWN_COMMUNITY,
                        email           = email,
                        name            = "Community admin",
                        handle          = $"admincreater_{email}"
                    };
                    _dbContext.Users.Add(user);
                }
                else
                {
                    //check if this is an admin
                    user = _dbContext.Users.SingleOrDefault(u =>
                                                            u.communityHandle == CommunityController.UNKNOWN_COMMUNITY &&
                                                            u.address == $"{Community}_admin" &&
                                                            u.handle == $"admincreater_{email}");

                    if (null == user)
                    {
                        throw new Converters.DisplayableException("email address not found");
                    }
                }
            }

            var    random   = new Random();
            string resetPin = string.Empty;

            for (int i = 0; i < 9; i++)
            {
                resetPin = String.Concat(resetPin, random.Next(10).ToString());
            }

            user.ResetPin = resetPin;
            await _dbContext.SaveChangesAsync();

            using (var mailmessage = new System.Net.Mail.MailMessage(
                       new System.Net.Mail.MailAddress("*****@*****.**"),
                       new System.Net.Mail.MailAddress(email))
            {
                Subject = "Your sharenomy reset code",
                Body = $"Your Sharenomy reset code is <strong>{resetPin}</strong>.<br/>If you did not request this code please ignore this message",
                IsBodyHtml = true,
            })
                using (var mailclient = new System.Net.Mail.SmtpClient
                {
                    DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory,
                    PickupDirectoryLocation = @"C:\tmp\testMailDrop",
                })
                {
                    mailclient.Send(mailmessage);
                }

            return(new { success = true });
        }