Exemplo n.º 1
0
        /// <summary>
        /// ユーザーのロールを削除する
        /// </summary>
        /// <param name="ldapUser"></param>
        /// <param name="role"></param>
        /// <returns></returns>
        public Task RemoveFromRoleAsync(LdapUser ldapUser, string roleName)
        {
            try
            {
                using (RMUserDbContext context = new RMUserDbContext())
                {
                    //指定されたロールを取得
                    var role = context.LdapUserRoles
                               .Where(r => r.Name == roleName)
                               .SingleOrDefault();
                    if (role == null)
                    {
                        throw new NotFoundLdapUserRoleException(
                                  string.Format("Role: '{0}' is not found.", roleName));
                    }

                    //既にメンバーに存在しない場合はそのまま抜ける
                    LdapUserRoleMember roleMember = role.Members
                                                    .Where(m => m.LdapId == ldapUser.Id)
                                                    .SingleOrDefault();
                    if (roleMember == null)
                    {
                        return(Task.Delay(0));
                    }

                    //該当するメンバーを削除
                    role.Members.Remove(roleMember);
                    context.SaveChanges();
                    return(Task.Delay(0));
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }