Beispiel #1
0
        public async Task <Models.Database.User> Index()
        {
            var characterId   = Int32.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var characterInfo = await esiClient.Character.GetCharacterPublicInfoV4Async(characterId);

            var corporationInfo =
                await esiClient.Corporation.GetCorporationInfoV4Async((int)characterInfo.Model.CorporationId);

            var auth = new AuthDTO {
                AccessToken = new AccessTokenDetails {
                    AccessToken  = User.FindFirst("AccessToken").Value,
                    ExpiresUtc   = DateTime.Parse(User.FindFirst("AccessTokenExpiry").Value),
                    RefreshToken = User.FindFirst("RefreshToken").Value
                },
                CharacterId = characterId,
                Scopes      = User.FindFirst("Scopes").Value
            };

            var locationInfo = await esiClient.Location.GetCharacterLocationV1Async(auth);

            var location = await esiClient.Universe.GetSolarSystemInfoV4Async(locationInfo.Model.SolarSystemId);

            var mining = await esiClient.Industry.CharacterMiningLedgerV1Async(auth);

            var model = new Models.Database.User {
                CharacterName     = characterInfo.Model.Name,
                CorporationName   = corporationInfo.Model.Name,
                CharacterLocation = location.Model.Name,
                CharacterMining   = mining
            };

            return(model);
        }
Beispiel #2
0
 public static void UpdateCharacter(Models.Database.User user)
 {
     using (var conn = ConnectionFactory()) {
         conn.Open();
         foreach (var item in user.CharacterMining.Model)
         {
             var dbItem = conn.QueryFirstOrDefault <Models.MiningLedger>(
                 @"SELECT * FROM MiningLedger WHERE Date = @Date AND SolarSystemId = @SolarSystemId AND TypeId = @TypeId LIMIT 1",
                 item);
             if (dbItem == null)
             {
                 conn.Execute(
                     @"INSERT INTO MiningLedger (UserKey, Date, Quantity, SolarSystemId, TypeId) VALUES(@UserKey, @Date, @Quantity, @SolarSystemId, @TypeId)",
                     new {
                     UserKey       = user.UserKey, Date = item.Date, Quantity = item.Quantity,
                     SolarSystemId = item.SolarSystemId, TypeId = item.TypeId
                 });
             }
             else
             {
                 conn.Execute(
                     @"UPDATE MiningLedger SET Quantity = @Quantity WHERE Date = @Date AND SolarSystemId = @SolarSystemId AND TypeId = @TypeId AND UserKey = @UserKey",
                     new {
                     UserKey       = user.UserKey, Date = item.Date, Quantity = item.Quantity,
                     SolarSystemId = item.SolarSystemId, TypeId = item.TypeId
                 });
             }
         }
     }
 }
Beispiel #3
0
        public async Task <IActionResult> Callback(string code, string state)
        {
            var authorization = new Authorization {
                AuthorizationCode = code,
                ExpectedState     = HttpContext.Session.GetString(SSOStateKey),
                ReturnedState     = state
            };

            var accessToken = await esiClient.SSO.VerifyAuthorizationAsync(authorization);

            var character = await esiClient.SSO.GetCharacterDetailsAsync(accessToken.AccessToken);

            var dbUser = DataAccess.User.SelectUser(character.CharacterId);

            //The user does not exist in the db
            if (dbUser == null)
            {
                dbUser = new Models.Database.User {
                    CharacterId            = character.CharacterId,
                    CharacterName          = character.CharacterName,
                    AccessToken            = accessToken.AccessToken,
                    RefreshToken           = accessToken.RefreshToken,
                    RefreshTokenExpiresUTC = accessToken.ExpiresUtc,
                    APIToken = Guid.NewGuid().ToString()
                };

                DataAccess.User.InsertUser(dbUser);
            }
            else
            {
                dbUser.AccessToken            = accessToken.AccessToken;
                dbUser.RefreshToken           = accessToken.RefreshToken;
                dbUser.RefreshTokenExpiresUTC = accessToken.ExpiresUtc;
                if (dbUser.APIToken == null)
                {
                    dbUser.APIToken = Guid.NewGuid().ToString();
                }

                dbUser.CharacterName = character.CharacterName;
                DataAccess.User.UpdateUser(dbUser);
            }

            Response.Cookies.Append("APIToken", dbUser.APIToken,
                                    new CookieOptions {
                Expires = DateTimeOffset.Now.AddDays(7)
            });

            await SignInAsync(accessToken, character);

            if (Guid.TryParse(state, out Guid stateGuid))
            {
                return(Redirect("http://localhost"));
            }
            else
            {
                var returnUrl = Encoding.ASCII.GetString(Base64UrlTextEncoder.Decode(state));
                return(Redirect(returnUrl));
            }
        }
Beispiel #4
0
 public static void UpdateUser(Models.Database.User user)
 {
     using (var conn = ConnectionFactory()) {
         conn.Open();
         conn.Execute(
             @"UPDATE Users SET CharacterId = @CharacterId, CharacterName = @CharacterName, AccessToken = @AccessToken, RefreshToken = @RefreshToken, RefreshTokenExpiresUTC = @RefreshTokenExpiresUTC, APIToken = @APIToken WHERE UserKey = @UserKey", user);
     }
 }
Beispiel #5
0
 public static long InsertUser(Models.Database.User user)
 {
     using (var conn = ConnectionFactory()) {
         conn.Open();
         return(conn.Execute(
                    @"INSERT INTO Users (CharacterId, CharacterName, AccessToken, RefreshToken, RefreshTokenExpiresUtc, APIToken) VALUES(@CharacterId, @CharacterName, @AccessToken, @RefreshToken, @RefreshTokenExpiresUTC, @APIToken)",
                    user));
     }
 }
Beispiel #6
0
 public Models.Database.ListItem ToDatabase(Models.Database.User user, Models.Database.List list)
 {
     return(new Models.Database.ListItem
     {
         title = this.title,
         description = this.description,
         user = user,
         list = list,
         image = this.image
     });
 }
Beispiel #7
0
        /// <summary>
        /// The update user name input command action.
        /// </summary>
        public void UpdateUserNameInputCommandAction()
        {
            _updateUser = null;
            foreach (var user in _mainModel.Users)
            {
                if (_updateUserName == user.Name)
                {
                    _updateUser = user;
                    break;
                }
            }

            SetUpdateUser(_updateUser);
        }
        public async Task CreateDboUser(string id)
        {
            var user = db.Users.Where(x => x.AspNetUsersId == id).FirstOrDefault();

            if (user == null)
            {
                user = new Models.Database.User()
                {
                    AspNetUsersId = id
                };
                db.Users.Add(user);

                await db.SaveChangesAsync();
            }
        }
Beispiel #9
0
        public void AddUser(string email, string password)
        {
            if (GetUser(email) != null)
            {
                throw new Error.EmailExists();
            }

            User user = new Models.Database.User
            {
                Email        = email,
                Password     = Crypto.HashPassword(password),
                RegisterDate = DateTime.Now
            };

            db.Users.Add(user);
            db.SaveChanges();
        }
Beispiel #10
0
            public Task <Result> Handle(Command command, CancellationToken cancellationToken)
            {
                var user = _bskContext.Users.FirstOrDefault(u => u.Id == command.Id);

                if (user != null)
                {
                    throw new ArgumentException("User already exists");
                }

                user = new Models.Database.User {
                    Id = command.Id, Name = command.Name
                };
                _bskContext.Users.Add(user);

                return(Task.FromResult(new Result {
                    User = user
                }));
            }
Beispiel #11
0
        private void ResetParameters()
        {
            AddUserName        = string.Empty;
            AddUserEmail       = string.Empty;
            AddUserPassword    = string.Empty;
            AddUserDescription = string.Empty;
            _addUserPassword   = string.Empty;

            UpdateUserName        = string.Empty;
            UpdateUserDescription = string.Empty;
            UpdateUserPassword    = string.Empty;
            UpdateUserEmail       = string.Empty;
            _updateUserImage      = string.Empty;

            _updateUser = null;
            OnPropertyChanged(() => CanAddUser);
            OnPropertyChanged(() => CanUpdateUser);
            OnPropertyChanged(() => Users);
        }
Beispiel #12
0
        /// <summary>
        /// The add user command action.
        /// </summary>
        public void AddUserCommandAction()
        {
            //UserName = "******" + DateTime.Now.ToLongTimeString();
            //UserName += " = " + MD5Hash(UserName);

            Models.Database.User newUser = new Models.Database.User()
            {
                Name         = _addUserName,
                Description  = _addUserDescription,
                Email        = _addUserEmail,
                ImageUri     = _addUserImage,
                DateAdded    = DateTime.Now,
                PasswordHash = MD5Hash(_addUserPassword)
            };

            _mainModel.UserDatabase.AddNewItemToDatabase(newUser);
            _mainModel.UserDatabase.ConnectToDatabase();

            MessageBox.Show("User added ok ");

            ClearAddUser();
        }
Beispiel #13
0
        public ActionResult CreateUser(CreateUserModel model)
        {
            DbContextTransaction transaction = null;

            if (ModelState.IsValid)
            {
                try
                {
                    var user = db.Users.Where(u => String.Compare(u.UserName, model.UserName, true) == 0).FirstOrDefault();
                    if (user == null)
                    {
                        // Begin transaction
                        transaction = db.Database.BeginTransaction();

                        // Save user info
                        user = new Models.Database.User();
                        SaltedHash sh = new SaltedHash(model.Password);

                        user.UserName   = model.UserName;
                        user.Password   = sh.Hash;
                        user.Salt       = sh.Salt;
                        user.FullName   = model.FullName;
                        user.Phone      = model.Phone;
                        user.Email      = model.Email;
                        user.IsActive   = model.IsActive;
                        user.CreateDate = DateTime.Now;

                        db.Users.Add(user);
                        db.SaveChanges();

                        // Save user roles
                        foreach (var item in model.SelectedRoles)
                        {
                            var userRole = new UserRole();
                            userRole.UserId = user.UserId;
                            userRole.RoleId = int.Parse(item.Id);
                            db.UserRoles.Add(userRole);
                        }
                        db.SaveChanges();
                        transaction.Commit();

                        return(RedirectToAction("ListUsers"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Tài khoản tên <strong>" + model.UserName + "</strong> đã được đăng ký. Vui lòng nhập tên khác!");
                    }
                }
                catch (Exception ex)
                {
                    // Rollback transaction
                    if (transaction != null)
                    {
                        transaction.Rollback();
                    }

                    ModelState.AddModelError("", "Error: " + ex.ToString());
                }
            }
            return(View(model));
        }