Esempio n. 1
0
        /// <summary>
        /// Gets all user information.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="email">The email.</param>
        /// <param name="token">The token.</param>
        /// <returns>The <see cref="Task"/>.</returns>
        public async Task <IEnumerable <User> > GetUser(IEnumerable <int> ids, IEnumerable <string> emails, IEnumerable <string> names, byte[] token)
        {
            var result = await this.ExecuteReader(
                "auth.getuserinfo2",
                parameters =>
            {
                var idParam = parameters.AddWithValue(
                    "ids",
                    CatiAuthDatalayer.CreateIdList(ids));
                idParam.SqlDbType = SqlDbType.Structured;
                idParam.TypeName  = "auth.idlist";

                var emailParam = parameters.AddWithValue(
                    "emails",
                    CatiAuthDatalayer.CreateStringList(emails));
                emailParam.SqlDbType = SqlDbType.Structured;
                emailParam.TypeName  = "auth.stringlist";

                var nameParam = parameters.AddWithValue(
                    "names",
                    CatiAuthDatalayer.CreateStringList(names));
                nameParam.SqlDbType = SqlDbType.Structured;
                nameParam.TypeName  = "auth.stringlist";

                parameters.AddWithValue("token", token);
            },
                SqlParsers.ParseRole,
                SqlParsers.ParseUser);

            var users = result.Item2.ToList();

            if (false == users.Any())
            {
                throw new ItemNotFoundException("The user could not be found.");
            }

            var roles = result.Item1.ToLookup(role => (int?)role.UserId, role => role.Role);

            foreach (var user in users)
            {
                user.Roles = new HashSet <string>((roles.Contains(user.Id) ? roles[user.Id] : Enumerable.Empty <string>()));
            }

            return(users);
        }
Esempio n. 2
0
 /// <summary>
 /// Sets a user based on the user model.
 /// </summary>
 /// <param name="usermodel">The user model.</param>
 /// <returns>An async task..</returns>
 public Task SetUser(User usermodel)
 {
     return(this.ExecuteNonQuery(
                "auth.setuserinfo",
                parameters =>
     {
         parameters.AddWithValue("id", usermodel.Id);
         parameters.AddWithValue("name", usermodel.Name);
         parameters.AddWithValue("email", usermodel.Email);
         parameters.AddWithValue("salt", usermodel.Salt);
         parameters.AddWithValue("password", usermodel.Password);
         var rolelist = parameters.AddWithValue(
             "rolelist",
             CatiAuthDatalayer.GetRoleRecord(usermodel.Roles));
         rolelist.SqlDbType = SqlDbType.Structured;
         rolelist.TypeName = "auth.rolelist";
     }));
 }