• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

yast / yast-sudo / 10832030092

12 Sep 2024 01:38PM UTC coverage: 6.074%. Remained the same
10832030092

push

github

lslezak
Import the changes from the OBS SLE15-SP6 project

140 of 2305 relevant lines covered (6.07%)

0.24 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/include/sudo/dialog-user.rb
1
# encoding: utf-8
2

3
module Yast
×
4
  module SudoDialogUserInclude
×
5
    def initialize_sudo_dialog_user(include_target)
×
6
      Yast.import "UI"
×
7
      textdomain "sudo"
×
8

9
      Yast.import "Label"
×
10
      Yast.import "Wizard"
×
11
      Yast.import "Sudo"
×
12
      Yast.import "Report"
×
13

14
      Yast.include include_target, "sudo/complex.rb"
×
15
      Yast.include include_target, "sudo/helps.rb"
×
16
    end
×
17

18
    def RedrawUserAlias(members)
×
19
      members = deep_copy(members)
×
20
      items = []
×
21

22
      Builtins.foreach(members) do |it|
×
23
        items = Builtins.add(items, Item(Id(it), it))
×
24
      end
×
25

26
      UI.ChangeWidget(Id("user_alias_members"), :Items, items)
×
27
      UI.ChangeWidget(Id("remove_member"), :Enabled, items != [])
×
28

29
      nil
×
30
    end
×
31

32
    def AddEditUserAliasDialog(what)
×
33
      caption = ""
×
34
      ua = Sudo.GetUserAliases2
×
35
      it = Ops.get(ua, Sudo.GetItem, {})
×
36

37
      alias_members = []
×
38
      name = ""
×
39
      items = []
×
40
      users = Convert.convert(
×
41
        Builtins.merge(Sudo.all_users, Sudo.GetAliasNames("user")),
×
42
        :from => "list",
×
43
        :to   => "list <string>"
×
44
      )
×
45

46
      if what == "Add"
×
47
        caption = _("New User Alias")
×
48
      elsif what == "Edit"
×
49
        alias_members = Ops.get_list(it, "mem", [])
×
50
        Builtins.foreach(alias_members) do |member|
×
51
          users = Builtins.filter(users) { |user| user != member }
×
52
        end
×
53
        name = Ops.get_string(it, "name", "")
×
54
        caption = _("Existing User Alias")
×
55
      end
×
56
      users = Builtins.sort(users) { |s1, s2| Ops.less_than(s1, s2) }
×
57

58
      contents = VBox(
×
59
        Left(InputField(Id("user_alias_name"), _("Alias Name (in CAPITALS)"))),
×
60
        VSpacing(1),
×
61
        Table(
×
62
          Id("user_alias_members"),
×
63
          Opt(:hstretch, :vstretch),
×
64
          Header(_("Alias Members")),
×
65
          []
×
66
        ),
×
67
        HBox(
×
68
          PushButton(
×
69
            Id("add_member"),
×
70
            Opt(:key_F3),
×
71
            Ops.add(Ops.add(" ", Label.AddButton), " ")
×
72
          ),
×
73
          PushButton(
×
74
            Id("remove_member"),
×
75
            Opt(:key_F5),
×
76
            Ops.add(Ops.add(" ", Label.DeleteButton), " ")
×
77
          ),
×
78
          HStretch()
×
79
        )
×
80
      )
×
81

82
      Wizard.SetContentsButtons(
×
83
        caption,
×
84
        contents,
×
85
        Ops.get_string(@HELPS, "user_alias", ""),
×
86
        Label.CancelButton,
×
87
        Label.OKButton
×
88
      )
×
89
      Wizard.HideAbortButton
×
90
      UI.ChangeWidget(
×
91
        Id("user_alias_name"),
×
92
        :ValidChars,
×
93
        "_0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
×
94
      )
×
95
      UI.ChangeWidget(Id("user_alias_name"), :Value, name)
×
96

97
      RedrawUserAlias(alias_members)
×
98

99
      ret = nil
×
100
      while true
×
101
        ret = UI.UserInput
×
102
        # next
103
        if ret == :next
×
104
          new_alias = Builtins.toupper(
×
105
            Convert.to_string(UI.QueryWidget(Id("user_alias_name"), :Value))
×
106
          )
×
107
          if new_alias == ""
×
108
            Popup.Error(_("Alias name must not be empty."))
×
109
            UI.SetFocus(Id("user_alias_name"))
×
110
            next
×
111
          end
×
112
          if name != new_alias
×
113
            if Sudo.SearchAlias2(new_alias, Sudo.GetUserAliases2)
×
114
              Popup.Error(
×
115
                Builtins.sformat(
×
116
                  _("Alias with name %1 already exists"),
×
117
                  new_alias
×
118
                )
×
119
              )
×
120
              UI.SetFocus(Id("user_alias_name"))
×
121
              next
×
122
            end
×
123
          end
×
124
          if alias_members == []
×
125
            Popup.Error(_("Alias must have at least one member."))
×
126
            UI.SetFocus(Id("user_alias_members"))
×
127
            next
×
128
          end
×
129

130
          Ops.set(it, "name", new_alias)
×
131
          Ops.set(it, "mem", alias_members)
×
132
          Sudo.SetUserAlias(Sudo.GetItem, it)
×
133
          Sudo.SetModified
×
134
          break 
×
135
          # back
136
        elsif ret == :back
×
137
          break 
×
138
          # add users
139
        elsif ret == "add_member"
×
140
          new_member = AddUserDialog(users)
×
141

142
          if new_member != ""
×
143
            alias_members = Builtins.add(alias_members, new_member)
×
144
            users = Builtins.filter(users) { |s| s != new_member }
×
145
            RedrawUserAlias(alias_members)
×
146
          end 
×
147
          # delete users
148
        elsif ret == "remove_member"
×
149
          current_item = Convert.to_string(
×
150
            UI.QueryWidget(Id("user_alias_members"), :CurrentItem)
×
151
          )
×
152
          alias_members = Builtins.filter(alias_members) do |s|
×
153
            s != current_item
×
154
          end
×
155
          users = Builtins.add(users, current_item)
×
156
          RedrawUserAlias(alias_members) 
×
157
          # unknown
158
        else
×
159
          Builtins.y2error("unexpected retcode: %1", ret)
×
160
          next
×
161
        end
×
162
      end
×
163

164
      @initial_screen = "user_aliases"
×
165
      Wizard.RestoreNextButton
×
166
      deep_copy(ret)
×
167
    end
×
168

169
    def SaveUserAliases
×
170
      :next
×
171
    end
×
172
  end
×
173
end
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc