|
1 | 1 | import app from 'flarum/admin/app'; |
2 | 2 | import Button from 'flarum/common/components/Button'; |
| 3 | +import Dropdown from 'flarum/common/components/Dropdown'; |
3 | 4 | import ExtensionPage from 'flarum/admin/components/ExtensionPage'; |
4 | 5 | import icon from 'flarum/common/helpers/icon'; |
5 | 6 | import ItemList from 'flarum/common/utils/ItemList'; |
@@ -152,9 +153,60 @@ export default class AuthSettingsPage extends ExtensionPage { |
152 | 153 | return items; |
153 | 154 | } |
154 | 155 |
|
| 156 | + getAvailableGroups() { |
| 157 | + const groups = app.store.all('groups'); |
| 158 | + return groups.filter((group) => group.id() !== '2'); // Exclude the "Guests" group |
| 159 | + } |
| 160 | + |
155 | 161 | customProviderSettings(name) { |
156 | 162 | const items = new ItemList(); |
157 | 163 |
|
| 164 | + // Add group selection dropdown |
| 165 | + items.add( |
| 166 | + 'group', |
| 167 | + <div className="Form-group"> |
| 168 | + <label>{app.translator.trans('fof-oauth.admin.settings.providers.group_label')}</label> |
| 169 | + <div className="helpText">{app.translator.trans('fof-oauth.admin.settings.providers.group_help')}</div> |
| 170 | + |
| 171 | + {(() => { |
| 172 | + const groupId = this.setting(`fof-oauth.${name}.group`)(); |
| 173 | + const selectedGroup = groupId ? app.store.getById('groups', groupId) : null; |
| 174 | + const icons = { |
| 175 | + 1: 'fas fa-check', // Admins |
| 176 | + 3: 'fas fa-user', // Members |
| 177 | + 4: 'fas fa-map-pin', // Mods |
| 178 | + }; |
| 179 | + |
| 180 | + return ( |
| 181 | + <Dropdown |
| 182 | + label={ |
| 183 | + selectedGroup |
| 184 | + ? [icon(selectedGroup.icon() || icons[selectedGroup.id()]), '\t', selectedGroup.namePlural()] |
| 185 | + : app.translator.trans('fof-oauth.admin.settings.providers.no_group_label') |
| 186 | + } |
| 187 | + buttonClassName="Button" |
| 188 | + disabled={!this.setting(`fof-oauth.${name}`)()} |
| 189 | + > |
| 190 | + <Button icon="fas fa-times" onclick={() => this.setting(`fof-oauth.${name}.group`)('')} active={!groupId}> |
| 191 | + {app.translator.trans('fof-oauth.admin.settings.providers.no_group_label')} |
| 192 | + </Button> |
| 193 | + |
| 194 | + {this.getAvailableGroups().map((group) => ( |
| 195 | + <Button |
| 196 | + icon={group.icon() || icons[group.id()]} |
| 197 | + onclick={() => this.setting(`fof-oauth.${name}.group`)(group.id())} |
| 198 | + active={groupId === group.id()} |
| 199 | + key={group.id()} |
| 200 | + > |
| 201 | + {group.namePlural()} |
| 202 | + </Button> |
| 203 | + ))} |
| 204 | + </Dropdown> |
| 205 | + ); |
| 206 | + })()} |
| 207 | + </div> |
| 208 | + ); |
| 209 | + |
158 | 210 | return items; |
159 | 211 | } |
160 | 212 | } |
0 commit comments