예제 #1
0
        public ActionResult ClientLogin(string userName, string password, string clientName)
        {
            var user = UserManager.FindUser(userName, password);
            if (user != null) {
                using (var f = new FileManager(UserManager.Context))
                {
                    Client c = f.CreateClient(user.Id, clientName);

                    return Json(new ClientLoginResult
                    {
                        Id = c.Id,
                        Secret = c.Secret,
                        UserId = c.UserId
                    });
                }
            }
            return Content("fail");
        }
예제 #2
0
        public User CreateUser(User template, string password)
        {
            byte[] saltBytes = new byte[16];
            (new Random()).NextBytes(saltBytes);
            string salt = (new SoapBase64Binary(saltBytes)).ToString();
            User newUser = new User
            {
                Name = template.Name,
                PasswordHash = ComputePasswordHash(salt, password),
                PasswordSalt = salt,
                FirstName = template.FirstName,
                LastName = template.LastName,
                QuotaLimit = template.QuotaLimit
            };

            try
            {
                _context.Users.Add(newUser);
                _context.SaveChanges();

                using (var fileManager = new FileManager(_context))
                {
                    // Create the user's root folder.
                    fileManager.CreateUserRootFolder(newUser);
                    // Create the user's default internal client.
                    fileManager.CreateClient(newUser.Id, "Internal", FileManager.InternalClientTag);
                }
            }
            catch
            {
                return null;
            }

            return newUser;
        }