Superuser detection for Flutter desktop application

Superuser is a special user, who granted as much as possible to access system files for maintenance purpose. Different systems has different names to refer superuser (e.g. root in various UNIX system and Administrator in Windows).

Although pub.dev has numerous of packages to detect superuser, they are designed for Android and some packages added iOS support already. Hence, these package may become bulky because of unnessary callbacks along with detection only.

Instead, superuser package offers superuser detection in Flutter desktop and two replicated identification command from UNIX (whoami and group) for additional verification if necessary.

Limitations

This package only tested using informations given on local machines only. It may not perform identically if running devices is domain joined.

Implementations

Production

No additional setup needed.

Testing or simulating with mock interface

For testing, MockSuperuser must be binded already before performing widget test:

import 'package:flutter_test/flutter_test.dart';
import 'package:superuser/instance.dart';
import 'package:superuser/mock.dart';

void main() {
    setUpAll(() {
        // Bind mock instance here
        SuperuserInstance.bindInstance(const MockSuperuser(whoAmI: "reonaw"));
    });
    // Do any testes below
}

If using for debug simulation, mock interface must be binded before runApp:

import 'package:flutter/widgets.dart';
import 'package:superuser/instance.dart';
import 'package:superuser/mock.dart';

void main() {
    SuperuserInstance.bindInstance(const MockSuperuser(whoAmI: "hiderik", isSuperuser: true, isActivated: true));

    runApp(const YourApp());
}

Demo

Demo application of superuser has been available in release page in Windows and Linux application.

These demo animations are for reference only, conditions and contents may be differ without notice.

Open without superuser right

Open demo application oridinary

Open with superuser right

Open demo application with superuser right

License

BSD-3

Libraries

instance
Instance configuration for binding SuperuserInterface when using Superuser.
mock
Replicate SuperuserInterface to emulate superuser condition in controllable values when performing debugs or testing.
superuser
Fundamental library for fetching superuser status.